1. Thiết Lập Tiền Đề Trên Hai Máy Chủ
Trước khi triển khai quy trình nhân bản dữ liệu, cần chuẩn bị môi trường cho cả nút chính (Master) và nút phụ (Slave) như sau:
- Đồng bộ phiên bản: Cài đặt cùng một bản phát hành MySQL để đảm bảo tương thích hoàn toàn.
- Kích hoạt dịch vụ: Đảm bảo MySQL đang chạy ổn định ở chế độ nền.
- Bảo mật Root: Đổi mới mật khẩu quản trị cao cấp cho tài khoản root trên từng máy.
2. Cấu Hình Tham Số Trên Node Chính
Máy chủ gốc cần được điều chỉnh để ghi lại các thay đổi nhật ký. Mở file cấu hình tại đường dẫn /etc/my.cnf và thêm nội dung dưới đây vào mục [mysqld]:
[mysqld]
log-bin=mysql-bin # Bật nhật ký nhị phân - Bắt buộc
server-id=101 # Định danh duy nhất, tránh trùng lặp với Slave
3. Cấu Hình Tham Số Trên Node Phụ
Đối với máy chủ nhận dữ liệu, cấu hình có chút khác biệt nhỏ. Bạn cũng chỉnh sửa file /etc/my.cnf nhưng phải đảm bảo server-id khác biệt hoàn toàn.
[mysqld]
log-bin=mysql-bin # Có thể tùy chọn bật để hỗ trợ Cascade Replication
server-id=102 # Phải khác ID của Master
4. Khởi Động Lại Dịch Vụ
Sau khi chỉnh sửa file cấu hình, thực hiện lệnh khởi động lại service để áp dụng các thay đổi mới:
# systemctl restart mysqld
5. Cấp Quyền Cho Tài Khoản Đồng Bộ
Truy cập vào MySQL trên máy chủ chính để tạo người dùng chuyên dụng cho việc replicating. Tránh sử dụng tài khoản root cho mục đích này để tăng cường bảo mật.
CREATE USER 'db_replica'@'%' IDENTIFIED BY 'Strong_Pass_2024';
GRANT REPLICATION SLAVE ON *.* TO 'db_replica'@'%';
FLUSH PRIVILEGES;
6. Thu Thập Thông Tin Vị Trí Log
Thực hiện truy vấn để lấy tên file log và vị trí hiện tại của Master. Đây là thông tin quan trọng để Slave biết điểm bắt đầu đồng bộ.
SHOW MASTER STATUS;
Ghi lại giá trị của cột File và Position. Hạn chế viết dữ liệu thêm vào Master ngay lúc này để tránh lệch lạc vị trí log.
7. Thiết Lập Kết Nối Từ Slave Sang Master
Di chuyển sang console của máy chủ phụ và nhập lệnh kết nối đến node chính bằng các thông tin vừa thu thập.
CHANGE MASTER TO
MASTER_HOST='192.168.5.10',
MASTER_USER='db_replica',
MASTER_PASSWORD='Strong_Pass_2024',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=154;
START SLAVE;
8. Kiểm Tra Trạng Thái Hoạt Động
Để xác nhận Slave đang hoạt động trơn tru, sử dụng lệnh kiểm tra trạng thái chi tiết. Tập trung kiểm tra hai dòng trạng thái quan trọng:
SHOW SLAVE STATUS\G
Slave_IO_Running: Cần có giá trị Yes.Slave_SQL_Running: Cần có giá trị Yes.
Nếu một trong hai giá trị là No, quá trình sao chép đã bị gián đoạn hoặc sai cấu hình.
9. Xác Minh Tính Nhất Quán Dữ Liệu
Quy trình kiểm thử cuối cùng là tạo dữ liệu mới trên Master và xác nhận nó xuất hiện trên Slave.
Thực hiện trên Master:
CREATE DATABASE test_shop;
USE test_shop;
CREATE TABLE users (uid INT, username VARCHAR(30));
INSERT INTO users VALUES (101, 'admin_test');
SELECT * FROM users;
Thực hiện trên Slave:
Chờ vài giây để đồng bộ xong, sau đó truy vấn lại trên máy chủ phụ.
USE test_shop;
SELECT * FROM users;
-- Dự kiến hiển thị: uid=101, username='admin_test'
Nếu dữ liệu khớp, hệ thống đã hoạt động chính xác. Để vận hành ổn định lâu dài, nên xây dựng các script giám sát tự động cảnh báo khi trạng thái IO hoặc SQL của Slave thay đổi sang No.