Hướng dẫn cấu hình Master – Slave MySQL trên Linux
I. Giới thiệu
MySQL Replication là một tính năng trên MySQL cho phéo sao chép dữ liệu từ bản chính (master) sang nhiều bản phụ (slave).
Quý khách hàng có thể sử dụng để triển khai như một mô hình HA, dự phòng rủi ro hoặc phương án giảm tải hệ thống SQL trong một số trường hợp.
Trong bài viết này Long Vân sẽ hướng dẫn cách cấu hình Master – Slave MySQL trên Linux.
II. Chuẩn bị
- 1 Server Linux đóng vai trò làm Master.
- 1 Server Linux đóng vai trò làm Slave.
- Cơ sở dữ liệu: MySQL 8. trở lên.
III. Cài đặt MySQL Server
- Cài đặt MySQL
- Ubuntu/Debian:
sudo apt update sudo apt install mysql-server -y
- CentOS/Redhat:
sudo yum update sudo yum install mysql-server -y
- Ubuntu/Debian:
- Khởi động MySQL
- Ubuntu/Debian:
systemctl start mysql.service systemctl enable mysql.service
- CentOS/Redhat:
systemctl start mysqld systemctl status mysqld
- Ubuntu/Debian:
IV. Cấu hình Master – Slave
Server Master
- Truy cậo vào file cấu hình của MySQL và điều chỉnh các thông số cần thiết như sau:
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
- Trong đó
- bind-address: IP của server Master
- log_error: file log lỗi (mặc định)
- server-id: id của server ( bạn có thể chọn bất kỳ số nào làm giá trị nhưng số đó phải là duy nhất không được trùng với các id của server khác)
- binlog_do_db: Database mà bạn muốn Replicate
- Bạn có thể Replicate nhiều Database với chỉnh sửa như sau:
binlog_do_db = db binlog_do_db = db_1 binlog_do_db = db_2
- Sau khi điều chỉng thông số hoàn tất chúng ta sẽ restart lại MySQL để nhận cấu hình:
sudo systecmtl restart mysql
- Trong đó
- Tiếp theo sẽ vào MySQL tạo user và phân quyền bằng lệnh “sudo mysql”:
mysql> CREATE USER 'slave_user'@'slave_server_ip' IDENTIFIED WITH mysql_native_password BY 'password'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'slave_server_ip'; mysql> FLUSH PRIVILEGES;
- Lưu ý: thay thế các thông số của slave_user thành thành thông tin của server Slave nhé!
Tiếp theo ta sẽ truy xuất toạ độ Binary Log từ server Mastermysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS;
Đây sẽ là vị trí mà các server Slave bắt đầu sao chép database, chúng ta sẽ lưu lại thông tin của “File” và “Position”, vì sẽ cần dùng để cấu hình cho server Slave.
- Lưu ý: thay thế các thông số của slave_user thành thành thông tin của server Slave nhé!
- Tạo Database cần sao lưu cho server Master:
mysql> CREATE DATABASE longvan_db; mysql> Use longvan_db; mysql> CREATE TABLE longvan_table ( longvan_column varchar(30) ); mysql> INSERT INTO longvan_table VALUES (‘longvan.net'), ('support.longvan.net');
Server Slave
- Đầu tiên chúng ta sẽ vào file config của Mysql
vi /etc/mysql/mysql.conf.d/mysql.cnf
- Ở đây các thông số sẽ tương tự với Master ngoại trừ server-id là đặc thù nên phải thay đổi, và ngoài ra thêm phần relay-log xác định vị trí lưu nhật ký chuyển tiếp của bản sao Database.
- Restart lại MySQL để nhận cấu hình trên server Slave
sudo systemctl restart mysql
- Sau đó chúng ta vào giao diện của Mysql để cấu hình cho server Slave kết nối được Master
sudo mysql mysql> CHANGE REPLICATION SOURCE TO mysql> SOURCE_HOST='Master_server_ip', # ip của server Master mysql> SOURCE_USER='slave_user', # user replicate tạo trên server Master mysql> SOURCE_PASSWORD='password', # password user replicate mysql> SOURCE_LOG_FILE='mysql-bin.000004’, # thông số File lưu ở server Master mysql> SOURCE_LOG_POS=157; # thông số Position đã lưu ở Master
- Sau cùng chúng ta sẽ dùng lệnh START SLAVE; để bắt đầu chạy MySQL Slave và đồng database
Trên hình, server Slave đã replicate được database của server Master
Như vậy Long Vân đã hoàn tất Hướng dẫn cấu hình Master – Slave của MySQL trên Linux. Chúc Quý khách thàng công!