Thiết Lập Đồng Bộ Hóa Hai Chiều Cơ Sở Dữ Liệu MySQL Trên Windows Server

Giới thiệu

Để đảm bảo tính sẵn sàng cao và cân bằng tải cho hệ thống, việc thiết lập đồng bộ hóa hai chiều (Master-Master) giữa các máy chủ MySQL là một giải pháp phổ biến. Bài viết này hướng dẫn quy trình cấu hình chi tiết trên môi trường Windows Server, giúp dữ liệu giữa hai node luôn được cập nhật đồng thời.

Điều kiện tiên quyết

  • Hạ tầng gồm 2 máy chủ chạy hệ điều hành Windows Server (ví dụ: phiên bản 2012 Datacenter trở lên).
  • Phiên bản MySQL trên cả hai máy phải tương thích, khuyến nghị cùng phiên bản chính (Major Version). Ví dụ: cùng dòng 5.6.x hoặc 5.7.x.
  • Kết nối mạng nội bộ ổn định giữa hai máy chủ. Giả sử IP máy chủ Node 1 là 10.10.10.1 và Node 2 là 10.10.10.2.

Bước 1: Tạo tài khoản đồng bộ

Truy cập vào command line của MySQL trên cả hai máy chủ để tạo một tài khoản chuyên dụng cho việc replication. Tài khoản này cần có quyền sao chép dữ liệu.

CREATE USER 'sync_user'@'10.10.10.%' IDENTIFIED BY 'SecurePass#2024';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_user'@'10.10.10.%';
FLUSH PRIVILEGES;

Lưu ý: Mật khẩu và tên người dùng nên được thay đổi phù hợp với chính sách bảo mật của tổ chức. Phạm vi IP 10.10.10.% cho phép truy cập từ toàn bộ mạng con này.

Bước 2: Cấu hình file my.ini

Mở file cấu hình my.ini của MySQL (thường nằm trong thư mục cài đặt) trên cả hai máy. Tìm section [mysqld] và bổ sung các tham số sau. Lưu ý mỗi máy phải có server_id duy nhất.

Cấu hình trên Node 1 (10.10.10.1):

[mysqld]
log_bin=replication-log
server_id=101
replicate_do_db=app_data
sync_binlog=1
log_slave_updates=1

Cấu hình trên Node 2 (10.10.10.2):

[mysqld]
log_bin=replication-log
server_id=102
replicate_do_db=app_data
sync_binlog=1
log_slave_updates=1

Sau khi lưu file, bắt buộc phải khởi động lại dịch vụ MySQL trên cả hai máy để các thay đổi có hiệu lực. Tham số replicate_do_db chỉ định database cần đồng bộ, ở đây ví dụ là app_data.

Bước 3: Thiết lập liên kết replication

Thực hiện cấu hình trên Node 2 để nó trở thành slave của Node 1. Trước tiên, cần kiểm tra trạng thái master trên Node 1 để lấy thông tin log file và vị trí.

Trên Node 1, chạy lệnh:

SHOW MASTER STATUS\G

Ghi lại giá trị của FilePosition. Sau đó, chuyển sang Node 2 và thực thi lệnh thiết lập kết nối:

CHANGE MASTER TO 
  MASTER_HOST='10.10.10.1', 
  MASTER_USER='sync_user', 
  MASTER_PASSWORD='SecurePass#2024', 
  MASTER_LOG_FILE='replication-log.000001', 
  MASTER_LOG_POS=4;

Lưu ý: Giá trị MASTER_LOG_FILEMASTER_LOG_POS phải khớp chính xác với kết quả trả về từ lệnh SHOW MASTER STATUS ở bước trước.

Bước 4: Kích hoạt và kiểm tra trạng thái

Trên Node 2, khởi động tiến trình slave:

START SLAVE;

Để xác minh quá trình đồng bộ đã hoạt động chưa, sử dụng lệnh:

SHOW SLAVE STATUS\G

Kiểm tra hai trường quan trọng là Slave_IO_RunningSlave_SQL_Running. Nếu cả hai đều hiển thị Yes và trường Slave_IO_State hiển thị trạng thái chờ sự kiện (ví dụ: Waiting for master to send event), thì cấu hình chiều từ Node 1 sang Node 2 đã thành công.

Bước 5: Cấu hình chiều ngược lại

Để đạt được đồng bộ hóa hai chiều, cần lặp lại quy trình tương tự để Node 1 trở thành slave của Node 2. Lấy thông tin SHOW MASTER STATUS trên Node 2, sau đó chạy lệnh CHANGE MASTER TO trên Node 1 với MASTER_HOST='10.10.10.2'. Cuối cùng là chạy START SLAVE trên Node 1 và kiểm tra trạng thái.

Bước 6: Kiểm thử tính đồng bộ

Truy cập vào database app_data trên Node 1, thực hiện thêm mới hoặc cập nhật một bản ghi trong bảng dữ liệu. Ngay sau đó, kiểm tra trên Node 2 xem dữ liệu đã được cập nhật chưa. Tiếp tục thực hiện thay đổi dữ liệu trên Node 2 và quan sát sự thay đổi trên Node 1. Nếu dữ liệu phản ánh chính xác trên cả hai máy chủ theo thời gian thực, hệ thống đồng bộ hóa hai chiều đã hoạt động ổn định.

Thẻ: mysql-replication windows-server database-clustering master-master

Đăng vào ngày 22 tháng 5 lúc 05:21