Trong mô hình này. Một Server sẽ đóng vai trò là MASTER, Server kia đóng vai trò là SLAVE.
Yêu cầu 2 Server:
- Đã cài đặt MySQL
- Server 1 có địa chỉ IP là: 192.168.1.131
- Server 2 có địa chỉ IP là: 192.168.1.155
- Database trên 2 Server cần đồng bộ có tên: dulieumau
1) Cấu hình MASTER (Server1):
Đánh lệnh để sửa lại nội dung file my.cnf
vi /etc/my .cnf |
#skip-networking #bind-address = 127.0.0.1 |
log-bin binlog- do -db=dulieumau server- id =1 |
Sau đó ta khởi động lại MySQL. Gõ lệnh:
service mysqld restart |
mysqld -u root -p |
Tạo một user để Server 2 đăng nhập và có thể Replicate
GRANT REPLICATION SLAVE ON *.* TO 'slave' @ '%' IDENTIFIED BY '123456' ; |
Trong dòng lệnh trên thì Username là slave1 và mật khẩu là 123456
Để đảm bảo tính nhất quán dữ liệu giữa 2 database trên Server1 và Server2. Ta tiến hành ngưng các tác động làm thay đổi cơ sở dữ liệu.
FLUSH TABLES WITH READ LOCK; |
SHOW MASTER STATUS; |
Chúng ta cần lưu lại 2 tham số của cột File và Position để cấu hình cho SLAVE.
2) Cấu hình SLAVE (Server 2):
Chú ý: Nếu như trước khi bạn thiết lập Replication này mà database cần Replicate của bạn đã có sẵn dữ liệu trên Server 1 thì bạn cần sao chép database này sang Server 2!
Bạn có thể thực hiện việc này bằng cách sao lưu và backup bằng tay từ server 1 sang server 2 hoặc có thể đánh lệnh sau trong server 2
LOAD DATA FROM MASTER;
==> Đảm bảo trước khi cấu hình đồng bộ hóa thì database ở 2 server là giống nhau!
Trên SLAVE mở và thêm đoạn sau vào nội dung file my.cnf
server- id =2 master-host=192.168.1.131 master-user=slave1 master-password=123456 master-port=3306 master-connect-retry=60 replicate- do -db= dulieumau |
Trong đó:
- master-host= IP hoặc domain của MASTER
- master-user= Tài khoản để SLAVE đăng nhập vào MASTER được tạo ở bước trên
- master-password= là mật khẩu của User đó
service mysqld restart |
mysql -u root -p |
SLAVE STOP; |
CHANGE MASTER TO -> MASTER_HOST= '192.168.1.155' , -> MASTER_USER= 'slave1' , -> MASTER_PASSWORD= '123456' , -> MASTER_LOG_FILE= 'mysqld-bin.000001' , -> MASTER_LOG_POS=98; |
với MASTER_LOG_FILE và MASTER_LOG_POS là hai tham số có giá trị được ta lưu lại ở bước phía trên!
Khởi động lại SLAVE:
SLAVE START; |
Giải phóng các Tables trên MASTER (Server 1)
3) Testing:
Khi ta tiến hành thay đổi dữ liệu trên dulieumau ở Server 1 thì dulieumau trên Server 2 cũng thay đổi theo y như vậy! ==> Thành công!
* Một số lệnh để xem logs và kiểm tra hoạt động trên MASTER và SLAVE:
-------- MASTER:
mysql> SHOW GRANTS FOR repl;
mysql> SHOW MASTER LOGS \G
mysql> SHOW BINARY LOGS;
mysql> SHOW MASTER STATUS;
mysql> RESET MASTER ---> ( CAUTON !!! )
-------- SLAVE:
mysql> SHOW SLAVE STATUS;
mysql> STOP SLAVE;
mysql> START SLAVE;
mysql> RESET SLAVE;
4) MySQL Replication theo 2 chiều:
Các bước cấu hình mình đã trình bày ở trên sẽ giúp đồng bộ dữ liệu mỗi khi Database trên Server 1 được thay đổi. Tuy nhiên nếu dữ liệu ở trên Server 2 thay đổi thì Server 1 không có được những thay đổi này! Đó là replication một chiều (MASTER --> SLAVE)
Để có thể replication chiều (MASTER <--> MASTER) ta tiến hành cấu hình 2 mô hình MASTER-SLAVE replication lồng vào nhau:
Bước 1: Server 1 là MASTER, server 2 là SLAVE
Bước 2: Server 1 là SLAVE, server 2 là MASTER
2 bước này cấu hình hoàn toàn tương tự như mình đã trình bày ở bên trên!
Không có nhận xét nào:
Đăng nhận xét