Search This Blog

Monday, July 11, 2011

Đồng bộ dữ liệu trên 2 Database Server sử dụng MySQL Server

Trong bài viết trước, mình có trình bày các Đồng bộ hóa dữ liệu trên 2 Database Server dùng SQL Server 2008. 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.

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
vi /etc/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ỏ
#skip-networking
#bind-address = 127.0.0.1


Tiếp đó, trong thẻ [mysqld] thêm vào nội dung sau:
log-bin
binlog-do-db=dulieumau
server-id=1


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:
service mysqld restart

Tiếp theo, đăng nhập vào MySQL trên Server 1 bằng tài khoản root
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à slave 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;

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.
SHOW MASTER STATUS;
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
server-id=2
master-host=192.168.1.155
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 đó

Sau đó khởi động lại MySQL
service mysqld restart

Đăng nhập vào MySQL bằng quyền root
mysql -u root -p

Nếu Server 2 hiện đang là 1 SLAVE đang hoạt động thì ta tạm dừng nó lại
SLAVE STOP;

Cấu hình những thông tin cần thiết để SLAVE giao tiếp được với MASTER:
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).
UNLOCK TABLES;

 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!

Ngô Duy Khánh (Kenhgiaiphap.Vn)

1 comment:

  1. bệnh trào ngược dạ dày thực quản có nguy hiểm khôngHiện nó đang đứng đầu bảng trong nhóm các bệnh nguy hiểm liên quan đến hệ tiêu hóa mà tổ chức WHO phải đưa vào mức báo động
    các nguyên nhân của bệnh trào ngược dạ dàyKhi bị trào ngược dạ dày thực quản, người bệnh sẽ gặp các vấn đề khó khăn trong ăn uống. Chế độ dinh dưỡng đẹp xem là vấn đề quan trọng đối với việc hỗ trợ điều trị và không làm tăng biểu hiện của bệnh
    bệnh trào ngược dạ dày thực quản uống thuốc gìTheo các chuyên gia y tế thì người bị trào ngược dạ dày thực quản nên ăn và không nên ăn các nhóm thực phẩm sau đây.

    trị hôi miệng cho ngừoi hút thuốc láBánh mì có thể không đầy đủ dinh dưỡng nhưng lại được xem là người bạn tốt của dạ dày và là siêu thực phẩm cho người bị trào ngược dạ dày thực quản.
    bệnh hôi miệng chữa trị như thế nàoDo có khả năng hút “axit” giúp làm giảm lượng axit trong dạ dày, hạn chế các thương tổn do những axit này gây ra cho dạ dày
    những nguyên nhân gây hôi miệngBên cạnh đó, nó còn cung cấp nguồn vitamin dồi dào cho cơ thể, vừa giúp cải thiện tình trạng ợ chua, ợ nóng ở của bệnh trào ngược dạ dày thực quản.

    bị hôi miệng có lây khôngHôi miệng đến từ bệnh về đường hô hấp bao gồm viêm xoang kinh niên, nhiễm trùng kinh niên phổi, ung thư phổi, viêm cuống họng,
    chữa hôi miệng bằng thuốc đông yVới đôi tay tận tụy quan tâm của người thầy thuốc, cùng với các loại thảo dược từ thiên nhiên đã cho ra đời Tỳ Bách Thảo – thảo dược đông y này giúp hỗ trợ việc điều trị hôi miệng
    làm thế nào để hết hôi miệngHôi miệng đến từ bệnh về đường hô hấp bao gồm viêm xoang kinh niên, nhiễm trùng kinh niên phổi, ung thư phổi, viêm cuống họng,

    ReplyDelete