Bài viết được sự cho phép của tác giả Nguyễn Thảo
Trong bài viết này, mình sẽ tiếp tục trình bày các để đồng bộ dữ liệu giữa 2 Database Server sử dụng MySQL Server (MySQL Replication), thực hiện trên hệ điều hành CentOS 5.6
Trong mô hình này. Một Server sẽ đóng vai trò là MASTER, Server kia đóng vai trò là SLAVE.
Việc làm database hấp dẫn trên TopDev
Công việc mysql lương 1000$+++
Yêu cầu 2 Server:
- Đã cài đặt MySQL
Cấu hình chung:
- Server 1 có địa chỉ IP là: 192.168.1.131
- Server 2 có địa chỉ IP là: 192.168.1.137
- 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
Đầu tiên bạn cần chắc chắn rằng 2 dòng sau của file my.cnf đã được commnet hoặc được xóa bỏ
Tiếp đó, trong thẻ [mysqld] thêm vào nội dung sau:
Trong đó binlog-do-db ta cho biết dữ liệu cần đồng bộ.
Sau đó ta khởi động lại MySQL. Gõ lệnh:
Tiếp theo, đăng nhập vào MySQL trên Server 1 bằng tài khoản root
Tạo một user để Server 2 đăng nhập và có thể Replicate
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.
Tiếp tục, Xem file log của cơ sỡ dữ liệu “dulieumau” hiện tại để slave biết bắt đầu replicate tại thời điểm nào.
Ví dụ ở đây ta có kết quả như hình dưới đây.
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
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 đó
Sau đó khởi động lại MySQL:
Đăng nhập vào MySQL bằng quyền root:
Nếu Server 2 hiện đang là 1 SLAVE đang hoạt động thì ta tạm dừng nó lại:
Cấu hình những thông tin cần thiết để SLAVE giao tiếp được với MASTER:
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:
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:
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.
Thanks for watching!
Tham khảo upshell.wordpress.com
Bài viết gốc được đăng tải tại laptrinhvb.net
Có thể bạn quan tâm:
- Kinh nghiệm vận hành MySQL – Chú ý khi chọn MySQL làm database
- MySQL: case vs. if vs. if function
- MySQL ngoại truyện