Replication Master-Slave là một kỹ thuật trong MySQL cho phép bạn sao chép dữ liệu từ một server (Master) sang một hoặc nhiều server khác (Slave). Việc thiết lập replication giúp cải thiện khả năng chịu lỗi, tăng cường hiệu suất đọc và dễ dàng quản lý dữ liệu. Bài viết này sẽ hướng dẫn bạn cách thiết lập replication Master-Slave một cách chi tiết và tỉ mỉ.
1. Giới Thiệu Về Replication Master-Slave
Replication Master-Slave là một phương pháp sao chép dữ liệu, trong đó máy chủ Master chứa dữ liệu chính và các máy chủ Slave sẽ nhận bản sao của dữ liệu này. Khi dữ liệu được ghi vào máy chủ Master, nó sẽ tự động được sao chép sang máy chủ Slave. Kỹ thuật này giúp đảm bảo dữ liệu luôn sẵn sàng và tăng cường khả năng phục hồi trong trường hợp máy chủ chính gặp sự cố.
2. Các Bước Thiết Lập Replication Master-Slave
Bước 1: Chuẩn Bị Môi Trường
Trước khi bắt đầu, bạn cần hai máy chủ MySQL:
- Máy chủ Master: Chứa dữ liệu chính.
- Máy chủ Slave: Nhận bản sao của dữ liệu từ máy chủ Master.
Bước 2: Cấu Hình Máy Chủ Master
Chỉnh sửa file cấu hình MySQL trên máy chủ Master:
Mở file cấu hình my.cnf
(hoặc my.ini
trên Windows) và thêm hoặc chỉnh sửa các dòng sau:
[mysqld]
server-id=1
log_bin=mysql-bin
- server-id: Là một số duy nhất cho mỗi máy chủ trong một cụm replication. Thường là
1
cho Master.
- log_bin: Bật ghi log nhị phân để sao chép dữ liệu.
Khởi động lại MySQL để áp dụng cấu hình:
sudo systemctl restart mysql
Tiếp theo, tạo người dùng cho replication:
Đăng nhập vào MySQL và thực hiện các lệnh sau:
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
Lấy thông tin log để cấu hình trên máy chủ Slave:
Chạy lệnh sau:
Kết quả sẽ cung cấp cho bạn các thông tin như File
và Position
, cần thiết cho việc cấu hình trên Slave.
Bước 3: Cấu Hình Máy Chủ Slave
- Mở file cấu hình MySQL trên máy chủ Slave và thêm hoặc chỉnh sửa các dòng sau:
- server-id: Là một số duy nhất khác với máy chủ Master (thường là
2
cho Slave).
Khởi động lại MySQL trên máy chủ Slave:
sudo systemctl restart mysql
- Đăng nhập vào MySQL trên máy chủ Slave và thực hiện lệnh sau để thiết lập replication:
CHANGE MASTER TO
MASTER_HOST='master_ip_address',
MASTER_USER='replica_user',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001', -- thay bằng giá trị File từ SHOW MASTER STATUS
MASTER_LOG_POS=12345; -- thay bằng giá trị Position từ SHOW MASTER STATUS
Bước 4: Bắt Đầu Replication
Cuối cùng, khởi động quá trình replication trên máy chủ Slave:
Kiểm tra trạng thái replication để đảm bảo mọi thứ hoạt động bình thường:
Bạn sẽ thấy thông tin về trạng thái của Slave. Nếu mọi thứ đều ổn, bạn sẽ thấy Slave_IO_Running: Yes
và Slave_SQL_Running: Yes
.
Kết luận: Sau khi hoàn thành các bước trên, bạn đã thiết lập thành công replication Master-Slave trong MySQL. Việc này sẽ giúp bạn cải thiện hiệu suất đọc, tăng cường khả năng phục hồi và quản lý dữ liệu một cách hiệu quả hơn.