MariaDB cluster dengan galera pada centos 7.x

3
2223

Halo sobat sekolahlinux kali ini saya coba membuat tutorial tentang mariadb cluster master:master dengan galera pada centos 7, tentu pertama-tama saya beranggapan kalian sudah menginstall mariadb kalian dan sudah ada db dan juga cms atau web dynamis berjalan diatasnya agar tutorial kali ini lebih real :D, berikut ini alat-alat yang disiapkan, untuk case ini saya menggunakan wordpress untuk cms nya

3 buah web server+mariadb+wordpress

  • 192.168.100.10 = hostname galera1 = bootstrap / –wsrep-new-cluster
  • 192.168.100.20 = hostname galera2
  • 192.168.100.30 = hostname galera3

Jangan lupa disable selinux

vim /etc/selinux/config

Ganti “enforcing” dengan “disabled”

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

Pertama tambahkan repo mariadb

vim /etc/yum.repos.d/mariadb.repo

Lalu tambahkan konten ini didalamnya

# MariaDB 10.0 CentOS repository list
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=0

Jika sudah edit file /etc/hosts

vim /etc/hosts

Lalu tambahkan konten dibawah ini didalamnya

192.168.100.10 galera1
192.168.100.20 galera2
192.168.100.30 galera3

Selanjutnya install mariadb galera

yum --enablerepo=mariadb -y install MariaDB-Galera-server

Selanjutnya edit file /etc/my.cnf.d/server.cnf dan uncomment juga tambahkan baris seperti dibawah

[mysqld]
log_error = /var/log/mysql.log
#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_provider=
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
#wsrep_cluster_address=
wsrep_cluster_address="gcomm://192.168.100.10,192.168.100.20,192.168.100.30"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#bind-address=0.0.0.0

#ini adalah nama untuk group cluster
wsrep_cluster_name="galeracluster"

#ini adalah alamat ip server ini
wsrep_node_address="192.168.100.10"
wsrep_sst_method=rsync
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0

Rubah wsrep_node_address script diatas pada masing2 server menjadi seperti dibawah

  • Server galera1 = wsrep_node_address=”192.168.100.10″
  • Server galera2 = wsrep_node_address=”192.168.100.20″
  • Server galera3 = wsrep_node_address=”192.168.100.30″

Penjelasan dari rule diatas

  • wsrep_cluster_address : untuk mendifinisikan ipaddress server mana saja yang nanti akan masuk kedalam lingkungan grup cluster
  • wsrep_cluster_name : nama untuk grup cluster, namanya harus sama pada setiap server yang masuk kedalam wsrep_cluster_address
  • wsrep_node_address : diisikan dengan alamat ip server masing-masing node (jika anda setting di galera1 maka isikan dengan ip galera1, jika anda setting di galera2 isikan dengan ip galera2 dan seterusnya begitu)
  • wsrep_sst_method : metode yang digunakan untuk replikasi db nya

sekarang jalankan perintah ini hanya pada server galera1

/etc/init.d/mysql start --wsrep-new-cluster

Lalu coba jalankan perintah ini pada server galera1

mysql -u root -p -e "show status like 'wsrep%'"

coba lihat pada baris “wsrep_incoming_addresses” ip nya baru 1

| wsrep_incoming_addresses | 192.168.100.20:3306|

Selanjutnya jalankan perintah ini pada server galera2 & galera3

/etc/init.d/mysql start

Lalu coba jalankan lagi perintah ini pada server galera1

mysql -u root -p -e "show status like 'wsrep%'"

Dan coba lihat kali ini pada baris “wsrep_incoming_addresses” sudah ada 3 ip

| wsrep_incoming_addresses | 192.168.100.20:3306,192.168.100.30:3306,192.168.100.10:3306 |

Oke tandanya kita sudah berhasil, untuk testnya coba kalian buat database di server mana saja dan kalian coba write table di server mana saja, pasti nanti di server lainnya pun akan ada, cara ini bisa kalian kombinasikan dengan haproxy sebagai loadbalancer, karena master:master

3 COMMENTS

  1. Terima kasih banyak atas tutorialnya.
    Saat menjalankan /etc/init.d/mysql start –wsrep-new-cluster

    Hasilnya seperti ini :
    Can’t create/write to file ‘/var/log/mysql.log’ (Errcode:13 “Permission denied”)

    Mohon bantuannya min 😀

    • halo mas.. mungkin mas bisa coba buat file log nya seperti ini
      `touch /var/log/mysql.log`
      lalu set permisionnya ke user mysql

  2. Halo,
    beberapa hari yang lalu saya mengkonfigurasi galera cluster untuk menggabungkan 3 node di CentOS 6.
    lalu saya berhasil dengan menguji replikasi di setiap database pada setiap node.
    Pagi ini saya memeriksa wsrep_cluster_size, dan nilainya adalah 0.
    Saya tidak dapat mereplikasi data apa pun di setiap database
    Saya coba untuk start mysql, tetapi gagal. Ini adalah pesan error nya:

    mysqld_safe logging to ‘/var/log/mariadb.log’
    131001 10:12:29 mysqld_safe starting mysqld daemon wirh database from/ var / lib / mysql
    ………………………………………….. ………………ERROR!

    kemudian, saya membuat perintah chmod 777 /etc/my.cnf dan chmod 777 /etc/my.cnf.d/server.cnf
    dan akhirnya sy bisa start service mysql nya lagi.

    tetapi nilai pada wrep_cluster_size masih 0
    Apakah ada service dari galera yang harus saya start jga?
    Terima kasih!

LEAVE A REPLY

Please enter your comment!
Please enter your name here