MySQL Master-slave Replication thiết lập slave server để cập nhật ngay lập tức các thay đổi trong Master server. Nhưng nó sẽ không cập nhật đến Master server nếu có bất kỳ thay đổi được thực hiện trên slave server. Đọc bài viết này để thiết lập MySQL Master-slave Replication. Bài viết này sẽ giúp bạn thiết lập Master-Master Replication giữa các máy chủ MySQL. Trong thiết lập này nếu bất kỳ thay đổi được thực hiện trên một trong hai máy chủ thì sẽ cập nhật đối với máy chủ còn lại Thông tin server sẽ sử dụng: Master-1: 192.168.1.15 Master-2: 192.168.1.16 Cơ sở dữ liệu: mydb Sử dụng liên kết này để kiểm tra khả năng tương thích giữa các phiên bản khác nhau của MySQL. 1. Cài đặt MySQL Master -1 Server Chỉnh sửa tập tin cấu hình MySQL và thêm những dòng sau đây sau phần [mysqld]. Mã: vim /etc/my.cnf Mã: [mysqld] log-bin=mysql-bin binlog-do-db=mydb server-id=1 Khởi động lại master mysql server để thay đổi có hiệu lực. Mã: service mysqld restart Tạo một tài khoản mysql trên máy chủ Master-1 với quyền REPLICATION SLAVE giúp replication client kết nối đến server. Mã: mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'secretpassword'; mysql> FLUSH PRIVILEGES; Ngăn chặn viết câu lệnh trên tất cả các bảng, vì vậy không có sự thay đổi sau khi thực hiện việc sao lưu. Mã: mysql> use mydb; mysql> FLUSH TABLES WITH READ LOCK; mysql> exit; Kiểm tra tên hiện tại tập tin binary log (File) và giá trị Position sử dụng lệnh sau đây. Mã: [B]mysql> SHOW MASTER STATUS;[/B] +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 332 | mydb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) Các kết quả đầu ra ở trên cho thấy rằng tập tin nhị phân hiện tại đang sử dụng là mysql-bin.000003 và giá trị position là 332. Ghi chú lại các giá trị để sử dụng trên master-2 server trong bước tiếp theo. Hãy sao lưu cơ sở dữ liệu và sao chép nó đến một master mysl server khác. Mã: mysqldump -u root -p mydb > mydb.sql scp mydb.sql 192.168.1.16:/opt/ Sau khi hoàn thành sao lưu loại bỏ READ LOCK từ các bảng, Vì vậy, những thay đổi có thể được thực hiện. Mã: mysql> UNLOCK TABLES; 2. Cài đặt MySQL Master-2 Server Chỉnh sửa tập tin cấu hình master-2 mysql server và thêm giá trị sau dưới phần [mysqld]. Mã: vim /etc/my.cnf Mã: [mysqld] log-bin=mysql-bin binlog-do-db=mydb server-id=1 server-id luôn luôn là một giá trị số khác không Khởi động lại mysql server. Mã: /etc/init.d/mysqld restart Khôi phục sao lưu cơ sở dữ liệu lấy từ master server: Mã: mysql -u root -p mydb < /opt/mydb.sql Tạo một tài khoản mysql trên máy chủ Master-2 với quyền REPLICATION SLAVE giúp replication client kết nối đến server. Mã: mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'secretpassword'; mysql> FLUSH PRIVILEGES; Kiểm tra tên hiện tại tập tin binary log (File) và giá trị Position sử dụng lệnh sau đây. Mã: [B]mysql> SHOW MASTER STATUS;[/B] +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 847 | mydb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) Các kết quả đầu ra ở trên cho thấy rằng tập tin nhị phân hiện tại đang sử dụng là mysql-bin.000001 và giá trị position là 847. Ghi chú lại các giá trị để sử dụng ở bước 3. Các giá trị tùy chọn cài đặt trên master-2 server sử dụng lệnh sau đây. Mã: mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.15', -> MASTER_USER='repl_user', -> MASTER_PASSWORD='secretpassword', -> MASTER_LOG_FILE='mysql-bin.000003', -> MASTER_LOG_POS=332; Bước 3: Hoàn thành thiết lập trên MySQL Master-1 Đăng nhập vào MySQL Master-1 server và thực hiện câu lệnh sau đây. Mã: mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.16', MASTER_USER='repl_user', MASTER_PASSWORD='secretpassword', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=847; Bước 4: Bắt đầu SLAVE trên cả hai máy chủ Thực hiện lệnh sau trên cả hai máy chủ để bắt đầu quá trình replication. Mã: mysql> SLAVE START; MySQL Master-Master Replication đã được cấu hình thành công trên hệ thống của bạn và trong chế độ làm việc. Để kiểm tra xem replication làm việc chưa, thực hiện thay đổi trên một trong hai máy chủ và kiểm tra xem thay đổi đó có được hiển thị trên máy chủ khác hay không.