The MySQL Replication was my first project as a Database
Administrator (DBA) and I have been working with Replication
technologies for last few years and I am indebted to contribute
my little part for development of this technology. MySQL supports
different replication topologies, having better understanding of
basic concepts will help you in building and managing various and
complex topologies. I am writing here, some of the key points to
taken care when you are building MySQL replication. I consider
this post as a starting point for building a high performance and
consistent MySQL servers. Let me start with below key
points Hardware. MySQL Server Version MySQL Server Configuration
Primary Key Storage Engine I will update this post with relevant
points, whenever I get time. I am trying to provide generic
concepts and it will be applicable to all version of MySQL,
however, some of the concepts are new and applicable to latest
versions …
In April, I already posted an article on how to upgrade safely your MySQL InnoDB Cluster, let’s review this procedure now that MySQL 8.0.12 is out.
To upgrade all the members of a MySQL InnoDB Cluster (Group), you need to keep in mind the following points:
- upgrade all the nodes one by one
- always end by the Primary Master in case of Single Primary Mode
- after upgrading the binaries don’t forget to start MySQL
without starting Group Replication
(
group_replication_start_on_boot=0
) - to run
mysql_upgrade
Let’s see this in action on the video below:
As you could see, this is quick and easy.
…
[Read more]We received feedback about how a member should act when leaving the group. And the majority of users wanted that when a node drops out of the group, it should kill all connections and shutdown. I totally agree with that behavior and it’s now the default in MySQL 8.0.12.
This new feature is explained in WL#11568.
Before this change, the server goes into super read only mode when dropping out of the group and allows users connected to this server or new connections (if you don’t use the router) to read old data.
Let’s check this out in the following video:
So now in MySQL 8.0.12, there is a mnew option called …
[Read more]This year again, the MySQL Team is eager to participate in the Oracle Open World conference. This is a great opportunity for our engineers and the entire MySQL Team to highlight what we’ve done, and also what we are working on. Another reason to be excited this year is our new participation to Code One, the Oracle developer focused conference. Oracle Code One will include a full track dedicated to MySQL.
This is very good news for everybody attending, from DBAs to developers, as we will offer even more great content ! This year, in both events, we will highlight how NoSQL+SQL=MySQL.
Our MySQL Engineers will deliver fantastic sessions about …
[Read more]After having explained how to achieve HA for MySQL Router for people who doesn’t want to install the MySQL Router on the application servers and after having illustrated how to use Pacemaker, this article explains how to setup HA for MySQL Router using keepalived.
Keepalived is very popular, maybe because it’s also very easy to use. We can of course use 2 or more servers. The principle is the same as on the previous articles, if the router dies, the virtual IP used by the application server(s) to connect to MySQL is sent to another machine where mysqlrouter is still running.
Let’s have a look at the configuration, in this case we use 2 machines, mysql1 and …
[Read more]This article will explain how to setup HA for MySQL Router as described in a previous article about where should the router stand.
For this setup, I will use Pacemaker (part of RedHat High Availability Add-on and available on RHEL, CentOS, Oracle Linux, …).
Of course we need a MySQL InnoDB Cluster but we won’t really use it for the HA setup of the MySQL Router.
Installing Pacemaker
The first step is to install pacemaker on all the machines we will use for our “MySQL Router Cluster”:
# yum install pacemaker pcs resource-agents
Now we need to start the pcsd
service and enable it
at boot (on all machines):
# systemctl start pcsd.service # systemctl enable pcsd.service
It’s time now to setup authentication, this operation is again …
[Read more]As you know, MySQL InnoDB Cluster is composed of 3 elements:
- a group replication cluster of at least 3 servers
- the MySQL Shell used to manage the cluster
- the MySQL Router that send the traffic from the application server(s) to the cluster
When presenting the solution in conferences, one the main question is Where should I put the router ? and the answer is always the same: the best place to install the router is the application server !
The router is a very lightweight process that gets its configuration from the cluster’s metadata and doesn’t require a lot of resources or maintenance.
So the ideal setup is the following:
However for many (obscure?) reasons, sometimes people doesn’t want to have the MySQL …
[Read more]Welcome to the third part of this series. I’m glad you’re still reading, as hopefully this means you find this subject interesting at least. Previously we presented the first two components of MySQL InnoDB Cluster: Group Replication and MySQL Router and now we will discuss the last component, MySQL Shell.
MySQL Shell
This is the last component in the cluster and I love it. Oracle have created this tool to centralize cluster management, providing a friendly, command-line based user interface.
The tool can be defined as an advanced MySQL shell, which is much more powerful than the well known MySQL client. With the capacity to work …
[Read more]Since MySQL 5.7 we have a new player in the field, MySQL InnoDB Cluster. This is an Oracle High Availability solution that can be easily installed over MySQL to get High Availability with multi-master capabilities and automatic failover.
This solution consists in 3 components: InnoDB Group Replication, MySQL Router and MySQL Shell, you can see how these components interact in this graphic:
In this three blog post series, we will cover each of this components to get a sense of what this tool provides and how it can help with architecture decisions.
Group Replication
This is …
[Read more]As promised, here is a post more detailed on how to create a MySQL InnoDB Cluster using MySQL Shell and the AdminAPI.
First of all, as a good practice is never enough repeated, whatever the version of MySQL you are using, please use the latest MySQL Shell ! So if you are using 5.7, please use MySQL Shell 8.0.11. See this compatibility matrix or this official one.
dba class
The AdminAPI can be accessed by the MySQL Shell via the dba object. The reference manual for this class is here. The Shell …
[Read more]