Combining Galera and asynchronous replication in the same MariaDB setup, aka Hybrid Replication, can be useful - e.g. as a live backup node in a remote datacenter or reporting/analytics server. We already blogged about this setup for Codership/Galera or Percona XtraDB Cluster users, but a master failover as described in that post does not work for MariaDB because of its different GTID approach. In this post, we will show you how to deploy an asynchronous replication slave to MariaDB Galera Cluster 10.x (with master failover!), using GTID with ClusterControl.
Preparing the Master
First and foremost, you must ensure that the master and slave nodes are running on MariaDB Galera 10.0.2 or later. A MariaDB replication slave requires at least one master with GTID among the Galera nodes. However, we would recommend users to configure all the MariaDB Galera nodes as masters. GTID, which is automatically enabled in MariaDB, will be used to do master failover.The following must be true for the masters:
- At least one master among the Galera nodes
- All masters must be configured with the same domain ID
- log_slave_updates must be enabled
- All masters’ MariaDB port is accessible by ClusterControl and slaves
- Must be running MariaDB version 10.0.2 or later
From ClusterControl this is easily done by selecting Enable Binary Logging in the drop down for each node.
And then enable GTID in the dialogue:
Once Proceed has been clicked, a job will automatically configure the Galera node according to the settings described earlier.
If you wish to perform this action by hand, you can configure a Galera node as master, by changing the MariaDB configuration file for that node as per below:
gtid_domain_id=<must be same across all mariadb servers participating in replication> server_id=<must be unique> binlog_format=ROW log_slave_updates=1 log_bin=binlog
After making these changes, restart the nodes one by one or using a rolling restart (ClusterControl > Manage > Upgrades > Rolling Restart)
Preparing the Slave
For the slave, you would need a separate host or VM with or without MariaDB installed. If you do not have MariaDB installed, you need to perform the following tasks; configure root password (based on monitored_mysql_root_password), create slave user (based on repl_user, repl_password), configure MariaDB, start the server and finally start replication.
Adding the slave using ClusterControl, all these steps will be automated in the Add Replication Slave job as described below.
After adding our slave node, our deployment will look like this:
Master Failover and Recovery
Since we are using MariaDB with GTID enabled, master failover is supported via ClusterControl when Cluster and Node Auto Recovery has been enabled. Whether the master would fail due to network connectivity or any other reason, ClusterControl will automatically fail over to the most suitable other master node in the cluster.
This way ClusterControl will add a robust asynchronous slave capability to your MariaDB Cluster!