Some users, myself included, have noticed that their MySQL error log contains many lines like this one: Where does that error come from? The error MY-010914 is part of the Server Network issues like: Those are usually more problematic than the ones we are covering today. The list is not exhaustive and in the source […]
On July 1st, 3 new releases of MySQL came out. Indeed, we released the next 8.0 (8.0.38), the first update of the 8.4 LTS (8.4.1), and the very first 9.0 as Innovation Release. We now support 3 versions of the most popular Open Source database.
With these releases, we also want to thank all the great contributors who send patches to MySQL.
For some time now, all the contributors have also been highlighted in the Release Notes, but we never thank enough, so let’s take back the good habits of listing them in a dedicated blog post.
Some contributions were merged into multiple versions. Let’s have a look at all these contributions:
…
[Read more]Some years ago, I wrote an article on connecting to MySQL 8.0 using the default authentication plugin (caching_sha2_password) with Perl. I also provided Perl-DBD-MySQL packages for EL7.
Somebody recently left a comment as he was looking for a
perl-DBD-MySQL driver compatible with the
caching_sha2_password
for Rocky Linux 8 (EL8 or OL8
compatible).
Therefore, I build two new packages supporting the latest perl-DBD-MySQL driver, version 5.005.
The difference is related to the version of libmysql they are linked to.
libmysql.so.21
for MySQL 8.0 and
libmysql.so.24
for MySQL 8.4 LTS:
MySQL 8.0
$ rpm -qf …
[Read more]
In MySQL 8.0.12, we introduced a new algorithm for DDLs that won’t block the table when changing its definition. The first instant operation was adding a column at the end of a table, this was a contribution from Tencent Games.
Then in MySQL 8.0.29 we added the possibility to add (or remove) a column anywhere in the table.
For more information, please check these articles from Mayank Prasad : [1], [2]
In this article, I want to focus on some dangers …
[Read more]I could have set MySQL between parenthesis in the title as this article is more about how to use OpenTofu to deploy on OCI.
I will explain how to install OpenTofu and how to use it to deploy on OCI. I will also mention what are the required changes be able to use my previous Terraform deployment files.
As an example, let’s use the modules to deploy WordPress with MySQL HeatWave Database Service: oci-wordpress-mds.
Installing OpenTofu
If like me you are using a RPM based Linux distro, you can find the necessary information to create the yum repository on OpenTofu’s website:
$ sudo su -
# cat >/etc/yum.repos.d/opentofu.repo <<EOF
[opentofu]
name=opentofu …
[Read more]
Some time ago, we saw how we could deploy WordPress on OCI using MySQL HeatWave Database Service with Read Replicas. We had to modify WordPress to use a specific plugin that configures the Read/Write Splitting on the application (WordPress): LudicrousDB.
Today, we will not modify WordPress to split the Read and Write operations, but we will use MySQL Router 8.2.0 (see [1], [2], [3]).
Architecture
The …
[Read more]You may have come across numerous presentations showcasing MySQL HeatWave as a Query Accelerator for MySQL. However, if you have not yet had the opportunity to test it yourself (if you have, you already know the answer), allow us to conduct a test using actual data to determine the potential benefits of utilizing a MySQL HeatWave Cluster.
Data & Queries
The data is simple, some arduinos with a DHT22 sensor sending temperature and humidity.
So first let’s have a look at the amount of collected data:
select format_bytes(sum(data_length)) DATA,
format_bytes(sum(index_length)) INDEXES,
format_bytes(sum(data_length + index_length)) 'TOTAL SIZE'
from information_schema.TABLES order by data_length + index_length;
+-----------+-----------+------------+
| DATA | INDEXES | TOTAL SIZE |
+-----------+-----------+------------+
| 21.89 GiB | 14.06 GiB | 35.95 GiB |
+-----------+-----------+------------+
1 …
[Read more]
Let’s see how to deploy WordPress and MySQL on a Kubernetes Cluster. The Kubernets cluster we are using is OKE (Oracle Kubernetes Engine) in OCI (Oracle Cloud Infrastructure):
OKE Cluster
We start by creating a Kubernetes Cluster on OCI using the Console:
We select the Quick create mode:
We need to name our cluster and make some choices:
When created, we can find it in the OKE Clusters list:
And we can see the pool of workers nodes and the workers:
kubectl
I like to use kubectl
directly on my latop to manage
my K8s Cluster.
On my Linux Desktop, I need to install
kubernetes-client
package (rpm).
Then on the K8s Cluster details, you can click on Access Cluster to get all the commands to use:
We need to copy them on our terminal and then, I like to also enable the bash completion for …
[Read more]To copy a MySQL server to another server or to the cloud, there are several ways.
We can distinguish between two different types of copy:
- physical copy
- logical copy
The physical copy is often the fastest. However, it requires some tools to ensure that you have a consistent online backup. For example, you can use MySQL Enterprise Backup (MEB).
Alternatively, it’s possible to use the CLONE plug-in to provision a new instance with existing data from a source server. This is my preferred approach.
Finally, the last physical solution is the use of a file system snapshot, but this requires the right infrastructure and even more care to have a consistent …
[Read more]Sometimes it’s convenient to retrieve the user creation statement and to copy it to another server.
However, with the new authentication method used as default since
MySQL 8.0, caching_sha2_password
, this can become a
nightmare as the output is binary and some bytes can be hidden or
decoded differently depending of the terminal and font used.
Let’s have a look:
If we cut the create user statement and paste it into another server what will happen ?
We can see that we get the following error:
ERROR: 1827 (HY000): The password hash doesn't have the expected format.
How could we deal with that ?
The solution to be able to cut & paste the authentication string without having any issue, is to change it as a binary representation (hexadecimal) like this:
And then replace the value in the user create statement:
But there is an easier way. …
[Read more]