Chuyện của sys

DevOps Blog

Làm thế nào để tạo một Mysql Master-Slave khi đã có một server đang chạy standalone ? October 23, 2021

Hôm nay mình gặp 1 case chưa làm bao giờ đó là có một Mysql đang chạy standalone và muốn deploy 1 master slave cho nó . Mình thấy nó khá hay nên lên đây viết vài dòng cũng như là note lại cho bản thân .
Chuẩn bị :
– Stop tất cả các api , worker có liên quan tới việc write database .
– Tạo banner bảo trì cho site .
1 . Install mysql cùng version với version node standalone đang chạy
– Để kiểm tra version node đang chạy ta dùng lệnh :
# rpm -qa | grep mysql
mysql-community-common-5.7.34-1.el7.x86_64
mysql-community-libs-compat-5.7.34-1.el7.x86_64
mysql-community-libs-5.7.34-1.el7.x86_64
mysql-community-server-5.7.34-1.el7.x86_64
mysql57-community-release-el7-9.noarch
mysql-community-client-5.7.34-1.el7.x86_64
– Sau đó qua node slave cài đặt giống với version đó . Phần cài đặt database chắc mình không note ở đây vì nó khá basic chỉ cần yum install là được .
2 . Setup mysql slave .
– Việc setup cho node slave cũng khá đơn giản chỉ cần set password root giống với node đang chạy standalone là được . Sau đó start nó lên .
3. Setup cho node đang chạy standalone thành master node .
– Ta vào file config /etc/my.cnf add 2 dòng :
+ server-id = 1
+ log-bin = /var/lib/mysql/mysql-bin
– Sau đó ta restart mysql
– Tiếp tục login vào mysql của Master node tạo 1 user replicate :
CREATE USER slave_user@localhost;
SET PASSWORD FOR slave_user@localhost= PASSWORD(“slavepassword”);
GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’10.%.%.%’ IDENTIFIED BY “slavepassword”; 
– Sau đó ta check status master node bằng lệnh :
SHOW MASTER STATUS\G

4. Dump database từ node master node sau đó sync qua slave node và import .
mysqldump -u root -p –all-databases –master-data > /home/all-databases.sql
rsync -aurv /home/all-databases.sql root@slave-node:/home/
5. Setup cho slave node .
– Ta vào file config /etc/my.cnf add dòng :
+ server-id = 2
– Sau đó ta restart slave node .
– Import database vừa sync được từ master node vào mysql ở slave node .
mysql -u root -p < all-databases.sql
– Sau khi import toàn bộ database xong ta login vào lại mysql slave node và change config thành slave của master hiện tại .
mysql -u root -p 
stop slave;
CHANGE MASTER TO MASTER_HOST =’10.0.0.1′, MASTER_USER =’slave_user’, MASTER_PASSWORD =’slavepassword’, MASTER_LOG_FILE = ‘mysql-bin.000001’, MASTER_LOG_POS = 2564;
start slave;

Lưu ý : MASTER_LOG_FILE và MASTER_LOG_POS được lấy từ SHOW MASTER STATUS .
Vậy là chúng ta đã hoàn thành việc chuyển database từ standalone thành replicate master-slave . Nếu thấy hay hãy cho mình 1 like và 1 share nhé . Cảm ơn tất cả mọi người

Categories: Linh tinh

Leave a Reply

Your email address will not be published. Required fields are marked *