注釋:MySQL支援單向、非同步複製,複製過程中一個伺服器充當主伺服器,而一個或多個其它伺服器充當從伺服器。主伺服器將更新寫入二進位記錄檔,並維護記錄檔的一個索引以追蹤記錄檔迴圈。伺服器在日誌中讀取的最後一次成功更新的位置。從伺服器接收從那時起發生的任何更新,然後封鎖並等待主伺服器通知下一次更新。在實際項目中,兩台分佈於異地的主機上安裝有MySQL資料庫,兩台伺服器互為主備,客戶要求當其中一台機器出現故障時,另外一台能夠接管伺服器上的應用,這就需要兩台資料庫的資料要即時保持一致,在這裡使用MySQL的同步功能實現雙機的同步複製。
以下是操作執行個體:
一、環境配置
1、主要資料服務端:CentOS release 5.6 mysql-5.0.77-4.el5_5.4 IP:192.168.4.200
2、從資料用戶端:CentOS release 5.69 mysql-server-5.0.95-5.el5_9 IP:192.168.4.244
二、在主、從資料庫增加同步帳號
1、在主庫增加一個從庫可以登入的帳號
MySQL>
GRANT all privileges ON *.* TO tongbu@'192.168.4.244' IDENTIFIED BY '123456';
(注意:tongbu是用於同步的帳號,123456是tongbu的密碼)
2、在從庫增加一個主庫可以登入的帳號
MySQL>
GRANT all privileges ON *.* TO tongbu@'192.168.4.200' IDENTIFIED BY '123456';
(注意:tongbu是用於同步的帳號,123456是tongbu的密碼)
三、設定資料庫參數
1、以root使用者登入主庫,修改主庫my.cnf檔案;
[root@jw01 mysql]# vim /etc/my.cnf
[mysqld]下面增加以下的參數;
default-character-set=utf8
log-bin=MySQL-bin
relay-log=relay-bin
relay-log-index=relay-bin-index
server-id=1
master-host=192.168.4.244 #同步伺服器的IP
master-user=tongbu #用於同步的帳號
master-password=123456 #用於同步帳號的密碼
master-port=3306 #同步伺服器的連接埠
master-connect-retry=30 #同步的時間間隔,單位是秒
binlog-do-db=zhubao #需要同步的庫,zhubao、HyDatabase、zentao、collect;
binlog-do-db=HyDatabase
binlog-do-db=zentao
binlog-do-db=collect
replicate-do-db=zhubao
replicate-do-db=HyDatabase
replicate-do-db=zentao
replicate-do-db=collect
2、以root使用者登入從庫,修改從庫my.cnf檔案;
[root@jw02 mysql]# vim /etc/my.cnf
[mysqld]下面增加以下的參數;
default-character-set=utf8
log-bin=MySQL-bin
relay-log=relay-bin
relay-log-index=relay-bin-index
server-id=2
master-host=192.168.4.200
master-user=tongbu
master-password=123456
master-port=3306
master-connect-retry=30
binlog-do-db=zhubao
binlog-do-db=HyDatabase
binlog-do-db=zentao
binlog-do-db=collect
replicate-do-db=zhubao
replicate-do-db=HyDatabase
replicate-do-db=zentao
replicate-do-db=collect
slave-net-timeout=60 #當slave從主要資料庫讀取log資料失敗
slave-skip-errors=all #忽略錯誤的參數