Hướng dẫn cài đặt Mysql Replication Master – Master

GIỚI THIỆU VỀ MÔ HÌNH MYSQL REPLICATION MASTER-MASTER

Trong mô hình MSQL Replication này, mọi thay đổi trên MSQL master 1 đều sẽ được tự động thực hiện trên MYSQL Master 2, luôn luôn đảm bảo dữ liệu trên MYSQL master 1 và master 2 giống nhau. Khi dữ liệu thay đổi trên Master 2 thì đông thời trên Master 1 cũng được thay đổi tương tự.

HƯỚNG DẪN CÀI ĐĂT

  • Tại mô hình này, cần 2 VPS cài đặt Mysql, ta sẽ sử dụng 2 VPS 61.14.232.23 và 61.14.232.76.
  • Tiến hành cài đặt mysql tại 2 VPS này

Cài đặt mysql 5.6

  • Cài đặt các repo cần thiết

yum install epel-release

yum upgrade ca-certificates --disablerepo=epel

rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm

  • Tiến hành cài đặt mysql 5.6

yum install mysql-server

  • Khởi động mysql

service mysqld start

  • Cài đặt mật khẩu cho mysql

mysqladmin –u root password ‘5Q5SzWfDXpawazud’

Cấu hình Mysql Replication Master – Master

Tại VPS Master 1: IP: 61.14.232.23
  • Cấu hình lại file /etc/my.cnf

vi /etc/my.cnf

  • Thêm các dòng sau nếu chưa có

server-id=1

log-bin = /var/lib/mysql/mysql-bin

  • Khởi động lại mysqld

service mysqld restart

  • Cấu hình mysql master

mysql –u root –p

  • Tạo user và phân quyền cho user trong replication

create user 'replicator'@'%' identified by 'MYSQL!#$%^';

grant replication slave on *.* to 'replicator'@'%';

  • Kiểm tra thông tin của Master

show master status;

  • Lưu lại thông tin file và Position
Tại VPS Master 2 IP:61.14.232. 76
  • Chỉnh sửa lại thông tin file /etc/my.cnf

vi /etc/my.cnf

server-id=2

log-bin = /var/lib/mysql/mysql-bin

  • Khởi động lại mysqld

service mysqld restart

  • Cấu hình mysql

mysqld –u root –p

  • Tạo user và phân quyền cho user trong replication

create user 'replicator'@'%' identified by 'MYSQL!#$%^';

grant replication slave on *.* to 'replicator'@'%';

  • Kiểm tra thông tin của Master

show master status;

  • Lưu lại thông tin trên.
Cấu hình kết nối Master – Master
  • Tại Master 1 – 61.14.232.23

mysql –u root –p

stop slave;

CHANGE MASTER TO MASTER_HOST = '61.14.232.76', MASTER_USER = 'replicator', MASTER_PASSWORD = 'MYSQL!#$%^', MASTER_LOG_FILE = 'mysql-bin.000010', MASTER_LOG_POS = 568;

start slave;

  • Tại Master 2 – 61.14.232.76

mysql –u root –p

stop slave;

CHANGE MASTER TO MASTER_HOST = '61.14.232. 23', MASTER_USER = 'replicator', MASTER_PASSWORD = 'MYSQL!#$%^', MASTER_LOG_FILE = 'mysql-bin.000005', MASTER_LOG_POS = 423;

start slave;

Cấu hình auto_increment

Trong một số trường hợp khi không cấu hình auto_increment, trong database có bảng sử dụng auto_increment, khi một trong 2 Master server downtime (Master 1), dữ liệu được thêm vào sẽ được đánh số thứ tự bình thường ( 1,2,3). Server Master 1 tiêp tục down, trong thời gian down đó server Master 2 up, dữ liệu chưa kịp sync từ Master 1 sang, dữ liệu mới đã được thêm vào cũng theo thứ tự (1,2,3).  Như vậy khi Master 1 up, dữ liệu được sync sang Master 2 sẽ bị trùng thứ tự.

Trong trường hợp này việc cài đặt auto_increment_increment và auto_increment_offset sẽ giải quyết được vấn đề trên.

  • auto_increment_increment=N : N là giá trị mà server sẽ tự động tăng khi có bản ghi mới. VD khi N=2, giá trị mới sẽ được tăng dần +2 như 2,4,6 hoặc 1,3,5
  • auto_increment_offset=x : Trong x là giá trị bắt đầu, VD trong trường hợp auto_increment_increment=2, auto_increment_offset=1 thì giá trị id khi bản ghi mới được them vào sẽ tự động được thêm là 1,3,5,7. Khi auto_increment_increment=3, auto_increment_offset=2 thì giá trị id khi bản ghi tự động được thêm vào sẽ là 2,5,8,11

Tiến hành chỉnh sửa file my.cnf tại Master1

vi /etc/my.cnf

  • Thêm các dòng sau

auto_increment_increment=2

auto_increment_offset=1

  • Khởi động lại mysqld

service mysqld restart

Tiến hành chỉnh sửa file my.cnf tại Master2

vi /etc/my.cnf

  • Thêm các dòng sau

auto_increment_increment=2

auto_increment_offset=2

  • Khởi động lại mysqld

service mysqld restart

Như vậy bạn đã cấu hình xong mô hình Mysql Replication Master – Master

Rate This Article

Leave A Comment?