MariaDB server memiliki fitur untuk membuat Mysql menjadi HA ( High Avaibility ), dimana database MariaDB bisa melakukan sinkronisasi ke beberapa server master to master. Fitur ini dikenal dengan nama MariaDB Galera Cluster. Hanya bisa jalan di sistem operasi Linux dan hanya mendukung XtraDB/InnoDB storage engines. Meskipun MyISAM juga didukung namun masih dalam tahap eksperimen.
Sejak MariaDB versi 10.1, wsrep API untuk Galera Cluster sudah digabungkan ke dalam instalasi mariaDB server.
MariaDB Galera Cluster |
Replikasi Synchronous
- Topologi Active-active multi-master
- Baca dan tulis ke semua cluster node
- Automatic membership control, failed nodes drop from the cluster
- Automatic node joining
- True parallel replication, on row level
- Direct client connections, native MariaDB look & feel
- Tidak ada jeda saat join cluster baru
- Tidak ada traksaksi yang hilang
- Skalabilitas baca dan tulis
- Latensi client yang kecil
Tahapan install MariaDB Galera Cluster
Asumsi : menggunakan 3 server yang sudah terinstall Debian 9 dan MariaDB 10.3 dengan nama Cluster_1 ( 10.10.10.1), Cluster_2 (10.10.10.2) dan Cluster_3 (10.10.10.3)
sudo apt-get install software-properties-common dirmngr
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.biznetgio.com/mariadb/repo/10.3/debian stretch main'
sudo apt-get update
sudo apt-get install mariadb-server
Setelah MariaDB terinstall, lakukan sebagai berikut pada cluster ke-1:
nano /etc/mysql/conf.d/galera.cnf
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="mysql_cluster"
wsrep_cluster_address="gcomm://10.10.10.1,10.10.1.2,10.10.1.3"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="10.10.10.1"
wsrep_node_name="cluster_1"
Lakukan hal yang sama pada cluster ke-2 dan cluster ke-3
Langkah berikutnya adalah menyamakan isi debian.cnf untuk semua cluster dengan mengambil cluster_1 sebagai master utamanya. Copy /etc/mysql/debian.cnf, lakukan duplikasi ke cluster_2 dan cluster_3
nano /etc/mysql/debian.cnf
[client]
host = localhost
user = debian-sys-maint
password = RBqBJyvetkuIEA9y
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = RBqBJyvetkuIEA9y
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
Terakhir, jika tidak ada error yang muncul lakukan pekerjaan sebagai berikut pada cluster_1 (10.10.10.1) :
galera_new_cluster
systemctl start mysql.service
Ingat command galera_new_cluster hanya ditujukan untuk memulai sebagai cluster pertama. Selanjutnya untuk cluster_2 dan cluster_3 lakukan start mysql seperti biasa.
systemctl start mysql
Cek status mysql :
systemctl status mysql.service -l
Lakukan pengecekan apakah cluster sudah berjalan dengan baik atau tidak dengan masuk ke root mysql
mysql -u root -p
SHOW STATUS LIKE 'wsrep_cluster_size';
show status like 'wsrep%';
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| wsrep_cluster_size | 3 |
+------------------------+-------+
1 row in set (0.001 sec)
0 Komentar