MariaDB Galera Cluster 10.1 บน CentOS 7
MariaDB Galera Cluster เวอร์ชัน 10.1 จะมีความแตกต่างกับ MariaDB Galera Cluster เวอร์ชัน 5.5 พอสมควร ทั้งในส่วนของไฟล์คอนฟิก และคำสั่งที่ใช้ในการสตาร์ท Cluster มีอะไรเปลี่ยนแปลงบ้างมาดูกันครับ
ตัวอย่างที่จะนำเสนอ จะมีคอมพิวเตอร์ 3 เครื่อง
Node1 –> IP 192.168.1.11
Node2 –> IP 192.168.1.12
Node3 –> IP 192.168.1.13
ติดตั้ง MariaDB10.1
ทำทั้ง 3 เครื่อง เพิ่มแหล่งดาวน์โหลด MariaDB 10.1 จาก
https://downloads.mariadb.org/mariadb/repositories
# MariaDB 10.1 CentOS repository list - created 2016-06-18 07:03 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
บันทึกไฟล์ ชื่อไฟล์ MariaDB.repo ไว้ที่ /etc/yum.repos.d
เสร็จแล้วใช้คำสั่ง
# yum install MariaDB-server
สำหรับเวอร์ชัน 10.1 แค่สั่ง yum install MariaDB-server แพ็กเก็จอื่นๆ ที่จำเป็นเกี่ยวกับ Cluster ก็จะถูกติดตั้งให้เองทั้งหมด ไม่ว่าจะเป็น galera rsync หรืออื่นๆ
คอนฟิก MariaDB 10.1
ทำเหมือนกันทั้ง 3 เครื่อง
หลังจากที่ติดตั้งเสร็จ ให้ mysql ทำงาน ด้วยคำสั่ง
# systemctl start mariadb.service
หลังจากนั้นรันคำสั่ง
# mysql_secure_installation
Enter current password for root (enter for none): กรณีที่ยังไม่ได้ตั้งรหัสผ่าน ให้ Enter ผ่าน
ให้ตอบคำถามของ mysql_secure_installation ดังต่อไปนี้
Set root password? [Y/n] y # ในที่นี้ตั้งระหัสผ่าน 123456
Remove anonymous users? [Y/n]} y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n]} y
เสร็จแล้วสั่ง
#systemctl stop mariadb.service
#systemctl disable mariadb.service
ในการทำ Cluster เราจำเป็นต้องสั่งให้ Cluster ทำงาน ด้วยตัวเราเอง ไม่ให้ระบบสตาร์ท MariaDB เอง จึงจำเป็นต้องใช้คำสั่ง
#systemctl disable mariadb.service
****ย้ำทำขั้นตอนที่กล่าวมาทั้ง 3 เครื่อง
ไฟล์คอนฟิก Cluster
ไฟล์คอนฟิก /etc/my.cnf ทั้ง 3 เครื่อง ต้องมี บรรทัดนี้
!includedir /etc/my.cnf.d
ไฟล์คอนฟิก /etc/my.cnf.d/server.cnf ของ Node1
[mariadb-10.1] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 innodb_doublewrite=1 query_cache_size=0 query_cache_type=0 innodb_autoinc_lock_mode=2 innodb_flush_log_at_trx_commit=0 wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.1.11,192.168.1.12,192.168.1.13 wsrep_cluster_name='mycluster' wsrep_node_address='192.168.1.11' wsrep_node_name='node1' wsrep_sst_method=rsync wsrep_sst_auth=root:123456
ไฟล์คอนฟิก /etc/my.cnf.d/server.cnf ของ Node2
[mariadb-10.1] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 innodb_doublewrite=1 query_cache_size=0 query_cache_type=0 innodb_autoinc_lock_mode=2 innodb_flush_log_at_trx_commit=0 wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.1.11,192.168.1.12,192.168.1.13 wsrep_cluster_name='mycluster' wsrep_node_address='192.168.1.12' wsrep_node_name='node2' wsrep_sst_method=rsync wsrep_sst_auth=root:123456
ไฟล์คอนฟิก /etc/my.cnf.d/server.cnf ของ Node3
[mariadb-10.1] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 innodb_doublewrite=1 query_cache_size=0 query_cache_type=0 innodb_autoinc_lock_mode=2 innodb_flush_log_at_trx_commit=0 wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.1.11,192.168.1.12,192.168.1.13 wsrep_cluster_name='mycluster' wsrep_node_address='192.168.1.13' wsrep_node_name='node3' wsrep_sst_method=rsync wsrep_sst_auth=root:123456
เมื่อคอนฟิกเสร็จแล้ว
Node1 สั่งสตาร์ท Cluster ด้วยคำสั่ง
# galera_new_cluster
Node2
# systemctl start mariadb.service
Node 3
ก่อนสตาร์ท Node 3 ต้องรอดูให้ Node 2 ดึงข้อมูลมาจาก Node1 ให้หมดก่อน นั่นก็คือสังเกตุจาก การขึ้น prompt หรือ การทำงานของ rsync หยุดลงก่อน ซึ่งจะช้าหรือเร็วขึ้นอยู่กับปริมาณข้อมูลใน Node1
แล้วค่อยสั่งสตาร์ท
# systemctl start mariadb.service
ที่ Node3 จะสตาร์ทสำเร็จก็ดูได้เช่นเดียวกับ Node2
ตรวจสอบว่า Cluster สตาร์ทได้สำเร็จจริงหรือไม่
ตรวจสอบที่เครื่อง Node ไหนก็ได้ โดยใช้คำสั่ง mysql
MariaDB [(none)]> show status like 'wsrep%';
ถ้าได้ผลดังภาพก็ถือว่าสตาร์ท Cluster ได้สำเร็จ คือมี IP ทั้งสามเข้ามาเป็นสมาชิกของ Cluster
แต่ถ้าให้ชัวร์กว่านั้นให้ ทดลองสร้างฐานข้อมูลที่ Node ใด Node หนึ่ง แล้ว ไป show databases; ที่โหนดอื่น ถ้ามี Database ครบทุก Node ก็สำเร็จครับ
อ้างอิง : https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/