Install MariaDB Galera Cluster in Ubuntu

I am going to show you on how to install MariaDB Cluster (with Galera) in Ubuntu Precise (12.04) LTS 64bit. You need at least 3 hosts running together to form a reliable cluster.

Hosts list:

maria1 – 192.168.10.101
maria2 – 192.168.10.102
maria3 – 192.168.10.103

 

Prepare Hosts

In all hosts, this is my /etc/hosts definition:

192.168.10.101        maria1 maria1.mycluster.com
192.168.10.102        maria2 maria2.mycluster.com
192.168.10.103        maria3 maria3.mycluster.com

 

Install MariaDB Cluster

1. Install the GPG key required by apt:

$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 1BB943DB

2. Add the apt repository:

$ sudo add-apt-repository 'deb http://mirror.stshosting.co.uk/mariadb/repo/5.5/ubuntu precise main'

3. Get the latest repo:

$ sudo apt-get update

4. Install MariaDB Cluster and related packages:

$ sudo apt-get install -y galera  mariadb-galera-server-5.5 mariadb-client-5.5 libmariadbclient18 mariadb-client-core-5.5 rsync netcat-openbsd

** Make sure you put the same MySQL root password on all hosts

 

Install Percona Xtrabackup

1. We are going to use Xtrabackup to perform State Snapshot Transfer (SST). Install GPG key for Percona:

$ sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

2. Add the apt repository for Percona:

$ sudo add-apt-repository 'deb http://repo.percona.com/apt precise  main'

3. Update and install Percona Xtrabackup:

$ sudo apt-get update && sudo apt-get -y install percona-toolkit percona-xtrabackup

 

Configure MariaDB Cluster

1. Once the installation completed, you need to comment following lines in /etc/mysql/my.cnf:

#bind-address
#default_storage_engine
#query_cache_limit
#query_cache_size

2. Add following lines for wsrep configuration options in /etc/mysql/my.cnf under [mysqld] directive:

binlog_format=ROW
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
innodb_doublewrite=1

3. Add following lines into specific node under [mysqld] directive:

maria1:

# wsrep provider configuration
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=256M; gcache.page_size=128M"
wsrep_cluster_address=gcomm://
wsrep_cluster_name="MariaDB_Cluster"
wsrep_node_address="maria1"
wsrep_node_name="maria1"
wsrep_sst_method=xtrabackup
wsrep_sst_auth="root:MyR00tPasswd"
wsrep_node_incoming_address=192.168.10.101
wsrep_sst_receive_address=192.168.10.101
wsrep_slave_threads=16

maria2:

# wsrep provider configuration
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=256M; gcache.page_size=128M"
wsrep_cluster_address=gcomm://maria1
wsrep_cluster_name="MariaDB_Cluster"
wsrep_node_address="maria2"
wsrep_node_name="maria2"
wsrep_sst_method=xtrabackup
wsrep_sst_auth="root:MyR00tPasswd"
wsrep_node_incoming_address=192.168.10.102
wsrep_sst_receive_address=192.168.10.102
wsrep_slave_threads=16

maria3:

# wsrep provider configuration
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=256M; gcache.page_size=128M"
wsrep_cluster_address=gcomm://maria1
wsrep_cluster_name="MariaDB_Cluster"
wsrep_node_address="maria3"
wsrep_node_name="maria3"
wsrep_sst_method=xtrabackup
wsrep_sst_auth="root:MyR00tPasswd"
wsrep_node_incoming_address=192.168.10.103
wsrep_sst_receive_address=192.168.10.103
wsrep_slave_threads=16

 

Initialize the Cluster

1. Login to maria1 to initialize the cluster by restarting the service:

$ sudo service mysql restart

2. Login to maria2 and maria3 and restart MySQL. This will allow maria2 and maria3 to perform SST from maria1:

$ sudo service mysql restart

3. Login to MariaDB console and check for following values:

MariaDB [(none)]> show status like 'wsrep_%';

And you should see following output:

| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_incoming_addresses | 192.168.10.101:3306,192.168.10.102:3306,192.168.10.103:3306 |
| wsrep_cluster_size | 3 |
| wsrep_ready | ON |

You could now point your web server or application server to one of MariaDB cluster node to query.

 

Notes

Once the cluster successfully initialized and connected, you should change the wsrep_cluster_address to other nodes in case if the server rebooted. So, login to respective server and change the wsrep_cluster_address to following value:

wsrep_cluster_address=gcomm://maria1,maria2,maria3

2 thoughts on “Install MariaDB Galera Cluster in Ubuntu

  1. Hi, we just have a couple of MariaDB servers being synced, but need any way to monitor the cluster and send an email in case of any issue / problem. Any easy / simple way ? thanks 🙂

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *