Cấu hình Replication với RDS (MySQL/Mariadb)
Last updated
Last updated
Địa chỉ
VNG CorporationĐể dữ liệu giữa MySQL server và RDS Instance đồng bộ hoàn toàn với nhau, bạn có thể cấu hình MySQL Replication. Lúc này, MySQL server của bạn sẽ đóng vai trò Master, RDS Instance sẽ đóng vai trò Slave Read-Only. Sau khi cấu hình thành công, mọi sự thay đổi trên MySQL server của bạn sẽ được đồng bộ trên RDS Instance thông qua cơ chế Mysql Asynchronous Replication.
Trên MySQL server của bạn, bạn khởi tạo một user để thực hiện Replication như sau:
VD: bạn tạo user 'rep'@'%' với password 'abcd1234' và gán Global Privileges là Replication Slave.
Để cấu hình Replication, bạn cần enable binary log trên MySQL server của bạn.
Để kiểm tra xem MySQL server của bạn đã bật binary log hay chưa, bạn có thể sử dụng câu lệnh sau:
Nếu kết quả là OFF, bạn có thể bật binary log bằng cách thêm trong file cấu hình my.cnf (đuờng dẫn mặc định thuờng là /etc/mysql/my.cnf) các giá trị sau:
Sau đó, bạn cần restart lại dịch vụ MySQL/Mariadb.
Đối với Ubuntu, bạn có thể sử dụng lệnh:
Kiểm tra lại bằng cách chạy lại câu lệnh trên:
Nếu kết quả là ON, chúc mừng bạn đã cấu hình Binary Log thành công.
Bạn có thể tham khảo hướng dẫn Import dữ liệu vào RDS Instance datastore MySQL/Mariadb bằng MySQLDump.
Trên MySQL server của bạn, bạn sử dụng lệnh sau để kiểm tra trạng thái Master:
Kết quả:
Bạn ghi nhận giá trị File và Postion của bin_log trên MySQL server của bạn để chuyển sang bước tiếp theo.
Trên RDS Instance, bạn đăng nhập bằng Master User.
Bạn gọi Stored Procedure mysql.vdbaas_changeMasterHost với cú pháp:
VD: MySQL server của bạn có thông tin như sau:
Host: 18.139.18.*
User: dba
Password: password
Bin_log File: mysql-bin-changelog.000054
Position: 154
thì bạn sẽ có câu lệnh sau:
Để bắt đầu quá trình Replication, bạn gọi Stored Procedure mysql.vdbaas_startSlave:
Để kiểm tra kết quả, bạn gõ lệnh:
Bạn chú ý các truờng: Seconds_Behind_Master và Slave_SQL_Running_State.
Nếu Slave_SQL_Running_State có giá trị Slave has read all relay log; waiting for more updates và Seconds_Behind_Master là 0 có nghĩa là hai bên đều đã đồng bộ thành công.
Từ bậy giờ, bạn có thể tắt đồng bộ và sử dụng RDS Instance là MySQL server chính bằng lệnh:
hoặc giữ nguyên và sử dụng RDS Instance như là một Replication Slave.