Đối với mô hình Master-Salve, khi dữ liệu thay đổi trên master, dữ liệu sẽ được tự động replicate sang slave server. Tuy nhiên, nếu dữ liệu thay đổi trên slave, thì sẽ không được replicate sang master. Điều này có nghĩa là, mô hình master-slave replication chỉ có tính dự phòng, không có khả năng load balacing (share tải giữa 2 máy master và slave).

Master Master

Khi dữ liệu thay đổi trên master, dữ liệu sẽ được tự động replicate sang slave, đồng thời khi dữ liệu thay đổi trên slave, thì cũng sẽ được tự động replicate sang master.

1. Cơ sở cấu hình:

Để cấu hình replication hai chiều, ta tiến hành cấu hình 2 mô hình master-slave replication lồng vào nhau.

  • ServerA là master, ServerB là slave.
  • ServerB là master, ServerA là slave.

Như vậy, kết hợp 2 lần cấu hình, ta sẽ được:
+ Khi dữ liệu thay đổi trên ServerA, dữ liệu sẽ replicate qua ServerB (theo cấu hình replication của bước 1)
+ Đồng thời, khi dữ liệu thay đổi trên ServerB, dữ liệu sẽ replicate qua ServerA (theo cấu hình replication của bước 2).

2. Chi tiết cấu hình:

Bước 1: ServerA là master, ServerB là slave: Tham khảo hướng dẫn cấu hình

Bước 2: Chia làm các bước nhỏ như sau:

a. ServerB là master, sửa những nội dung sau trong file /etc/my.cnf

master-host = [IP ServerA]
master-user = repl
master-password = slavepass
master-port = 3306

log-bin
binlog-do-db=adam

b. Tạo quyền replication trên ServeB cho ServerA:

grant replication slave on *.* to 'repl'@[IP ServerA] identified by 'slavepass2';

c. Để đưa ServerA thành slave của ServerB, sửa nội dung file /etc/my.cnf

log-bin
binlog-do-db=adam
binlog-ignore-db=mysql
binlog-ignore-db=test

server-id=1
#information for becoming slave.
master-host = [IP ServerB]
master-user = repl
master-password = slavepass2
master-port = 3306

d. Tiếp tục, làm lại các bước SHOW MASTER STATUS trên ServerB và START SLAVE trên ServerA như đã làm ở bước 1.

Vậy là bạn đã có mô hình master-master replication hai chiều. Hoàn tất, test thử.

Theo Nhatnghe.com

About The Author