Mysql的即時同步 - 主從模式.
設定方法:
步一 在主服務服上建立 同步用的使用者並給予 許可權
GRANT REPLICATION SLAVE ON *.* TO backup@'%' IDENTIFIED BY '123456';
給任何串連的backup使用者以replication的許可權
(這裡是mysql 5.0的 如果是4.0.2 以前的版本, 因為不支援 REPLICATION 要使用下面的語句來實現這個功能
GRANT FILE ON *.* TO backup@'%' IDENTIFIED BY '123456';
)
步二 配置 mysql.ini:
主伺服器
#master
server-id = 1
log-bin="c:\mysql\logs\mysql_binary_log"
binlog-do-db="test"
解釋:
1)server-id表示是原生序號為1,slave的server-id 不能與master的相同
2)log-bin表示開啟binlog,開啟該選項才可以通過I/O寫到Slave的relay-log,也是可以進行replication的前提;
其中mysql_binary_log是記錄檔的名稱,mysql將建立不同副檔名,檔案名稱為mysql_binary_log的幾個記錄檔.
3)binlog-do-db=test 表示需要備份的資料庫是test這個資料庫,
如果需要備份多個資料庫,那麼應該寫多行,如下所示:
binlog-do-db=backup1
binlog-do-db=backup2
binlog-do-db=backup3
從伺服器
# Replication slave
server-id=2
master-host="192.168.10.33"
master-user="backup"
master-password="123456"
master-port=3306
master-connect-retry=60
replicate-do-db=test
解釋:
1) server-id=2表示本機器的序號;
2) master-host=192.168.10.33 表示本機做slave時的master為192.168.10.33;
3) master-user=username 這裡表示master上開放的一個有許可權的使用者,使其可以從slave串連到master並進行複製;
4) master-password=password 表示授權使用者的密碼;
5) master-port=3306 master上MySQL服務Listen3306連接埠;
6) master-connect-retry=60 同步間隔時間;
7) replicate-do-db=backup 表示同步backup資料庫,這個資料庫名是區分大小寫,必須與master的資料庫一致;
log-bin 開啟logbin選項以能寫到slave的 I/O線程;
最後重新啟動兩台機器的mysql.
步三 將master上已有的記錄 匯入到slave中.
------------------------------------------------
查看狀態 及調試
1,查看master的狀態
SHOW MASTER STATUS;
Position 不應為0
2,查看slave的狀態
show slave status;
Slave_IO_Running | Slave_SQL_Running 這兩個欄位 應為 YES|YES.
show processlist;
會有兩條記錄與同步有關 state為 Has read all relay log; waiting for the slave I/O thread to update it
和s Waiting for master to send event .
3,錯誤記錄檔
MySQL安裝目錄\data\Hostname.err
刪除 relay-log.info , master.info ,xwb0703-relay-bin.*
slave利用這2個檔案來跟蹤處理了多少master的二進位日誌。
每次刪除 relay-log.info , master.info 後會重新從 主伺服器下載 更新。
必須要主服務上 將 log-bin 下的檔案刪除 才可以。