MariaDB Galera “Cluster” için geliştiştirilmiş veritabanı aracıdır. Verileriniz 3 sunucuda da eşitlenir. 3 sunucu da okuma-yazma yapabilir. Daha fazla detay için bu bağlantıya göz atabilirsiniz.

MariaDB Galera sadece InnoDB storage engine desteklemektedir.

Bu işlemler 3 adet Ubuntu 20.04 sunucu üzerinde yapılacaktır. İlk olarak “Maria-DB Server” kurulumunu yapalım.

apt-get install mariadb-server -y

Servisi başlatalım.

systemctl start mariadb

Servisi kontrol edelim.

systemctl status mariadb

MySQL güvenlik adımlarını sağlamak için aşağıdaki komutu terminalde doğrudan çalıştırın. Bu komut dizesinde root şifrenizi de belirleyeceksiniz.

mysql_secure_installation

Cevaplarınız aşağıdaki gibi olmalıdır.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!
Remove anonymous users? [Y/n] n
 ... skipping.
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

Conf dosyasını açalım ve içerisine ekleyelim. Config’i kendinize göre düzenleyin.

#Server -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="galera_cluster"
wsrep_cluster_address="gcomm://10.0.0.10,10.0.0.11,10.0.0.12"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="10.0.0.10"
wsrep_node_name="mariadb01"

#Server -2

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="galera_cluster"
wsrep_cluster_address="gcomm://10.0.0.10,10.0.0.11,10.0.0.12"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="10.0.0.11"
wsrep_node_name="mariadb02"

#Server -3

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="galera_cluster"
wsrep_cluster_address="gcomm://10.0.0.10,10.0.0.11,10.0.0.12"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="10.0.0.12"
wsrep_node_name="mariadb03"

Config ayarlarından sonra MariaDB’yi 3 sunucumuzda da durduralım.

systemctl stop mariadb

Servisi kontrol edelim.

systemctl status mariadb

Şimdi ilk sunucumuzda aşağıdaki komutu çalıştıralım.

galera_new_cluster

Cluster durumunu kontrol edelim.

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

İkinci sunucumuzda (Server -2) MariaDB’yi başlatalım.

systemctl start mariadb

Tekrar Cluster durumunu kontrol edelim.

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+

Üçüncü sunucumuzda (Server -3) MariaDB’yi başlatalım.

systemctl start mariadb

Son kez Cluster durumunu kontrol edelim.

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

Eğer reboot attıktan sonra MySQL servisi çalışmazsa ve bu hatayı alıyorsanız “[ERROR] WSREP: failed to open gcomm backend connection: 110: failed to reach primary view: 110 (Connection timed out)” aşağıdaki komutu uygulayın.

sed -i "/safe_to_bootstrap/s/0/1/" /var/lib/mysql/grastate.dat

Ardından aşağıdaki komutu ilk sunucuda (Server -1) tekrar yazın.

galera_new_cluster

Diğer sunucularda (Server 2 ve 3) ise aşağıdaki komutları çalıştırın.

sed -i "/safe_to_bootstrap/s/0/1/" /var/lib/mysql/grastate.dat
service mysqld restart