Trong bài viết này tôi sẽ hướng dẫn các bạn cài đặt môi trường replica cho máy chủ MySQL.
Giả sử rằng:
- Máy chủ chính có địa chỉ IP là: 123.456.789.1
- Máy chủ thay thế có địa chỉ IP là: 123.456.789.2
1.Trên máy chủ chính
Cài đặt ứng dụng mysql:
yum install mysql-server mysql
Khởi động dịch vụ của mysql:
systemctl start mysql
systemctl enable mysql
Sửa tập tin /etc/my.cnf, và thêm vào phần [mysqld] nội dung sau:
server-id = 1
binlog-do-db=database
relay-log = mysql-relay-bin
relay-log-index = mysql-relay-bin.index
log-bin = mysql-bin
Trong đó database là tên của database bạn muốn tạo replica.
Khởi động lại dịch vụ mysql bằng lệnh:
systemctl restart mysql
Đăng nhập vào mysql bằng lệnh:
mysql -u root -p
Chạy lần lượt các lệnh sau để tạo tài khoản cho máy chủ replica:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%' IDENTIFIED BY 'PASSWORD'
mysql> FLUSH PRIVILEGES;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 245 | database | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> exit
Lưu ý nhớ thông tin trong cột File và Position để sử dụng trên máy chủ replica.
Sử dụng lệnh sau để xuất dữ liệu từ máy chủ chính và import vào máy chủ replica:
mysqldump -u root -p --master-data database > /root/database.sql
2.Trên máy chủ thay thếTiến hành cài đặt mysql và sử đổi tập tin cấu hình /etc/my.cnf để thêm nội dung sau vào phần [mysqld]:
server-id = 2
master-host=123.456.789.1
master-connect-retry=60
master-user=slaveuser
master-password=PASSWORD
replicate-do-db=database
relay-log = mysql-relay-bin
log-bin = mysql-bin
Khởi động lại dịch vụ của mysql:
Tiến hành import dữ liệu vào hệ thống:
mysql -u root -p < /root/database.sql
Đăng nhập vào dịch vụ:
Cấu hình cho máy chủ slave:
mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='123.456.789.1', MASTER_USER='slaveuser', MASTER_PASSWORD='PASSWORD', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=245;
mysql> slave start;
Kiểm tra trạng thái của máy chủ slave bằng lệnh sau:
mysql> show slave status;
Nếu thấy output hiện ra có dòng sau là thành công: