MariaDB Replication gtid (Master-Slave) มี database บน master (ปิดการเชื่อมต่อ DB มี down-time)
1) Install Mariadb ทั้ง 2 เครื่อง
https://downloads.mariadb.org/mariadb/repositories/#mirror=23Media
2) เครื่อง Master
แก้ไขไฟล์ /etc/mysql/my.cnf ตามนี้
server-id เป็นตัวบอกว่าเครื่องไหนเป็น master โดยเครื่องที่เลขต่ำสุดจะเป็น master
bind-address default จะเป็น 127.0.0.1 ให้เปลี่ยนเป็น ip ของเครื่อง
bind-address = server-ip
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
เปลี่ยน port mariadb เพื่อไม่ให้มีการเปลี่ยนแปลงของ DB ตามรูป
systemctl restart mariadb
เสร็จแล้วให้เพิ่ม user สำหรับ replication
mysql -u root -p
grant replication slave on . to replica-user@'%' identified by 'password';
flush privileges;
mysql -u root -p
SHOW MASTER STATUS\G << จดข้อมูลที่ได้ไว้
Dump database
mysqldump -u root -p --all-databases > mysql_dump.sql
scp mysql_dump.sql root@ip-slave:/root/
3) เครื่อง Slave
แก้ไขไฟล์ /etc/mysql/my.cnf ตามนี้
bind-address = server-ip
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
read_only = 1
systemctl restart mariadb
import dump from master
mysql -u root -p < mysql_dump.sql
คอนฟิก replication บนเครื่อง slave
master_log_file='ดูจากเครื่อง master ที่ให้จดไว้',
master_log_pos=ดูจากเครื่อง master ที่ให้จดไว้,
mysql -u root -p
change master to
master_host='192.168.100.13',
master_user='replica-user',
master_password='password',
master_log_file='mariadb-bin.000003',
master_log_pos=532,
4) เปลี่ยน port เครื่อง master กลับเป็นเหมือนเดิม แล้วสั่ง restart service
5) กลับไปที่เครื่อง slave
mysql -u root -p
start slave;
show slave status\G
test replication โดย สร้าง databases บน master แล้วลอง show databases บน slave
6) add gtid บน slave
stop slave
change master to
master_use_gtid=slave_pos;
start slave;
show slave status\G