為什麼MySQL數據庫的主從服務器之間的數據會有差距呢?原因是由於主服務器比較繁忙,主服務器與從服務器的硬件相差比較大等原因可能造成主服務器與從服務器數據差距比較大。為了不影響MySQL數據庫的應用,我們常常手動地定期進行主從服務器的數據同步,下面是手動進行數據同步的步驟。該過程是在數據庫負載比較低時執行的,此時主服務器不能更新。
1、對主服務器執行:
- mysql> flush tables with read lock; 用讀鎖鎖住所有的表阻止對它的更新
- mysql> show master status\G
- *************************** 1. row ***************************
- File: binlog.000022
- Position: 592429
- Binlog_Do_DB:
- Binlog_Ignore_DB:
記錄下FILE後面的值及Postion後面的值也就是日志名字及其偏移量。
2、在從服務器上執行下面的語句:
- mysql> select MASTER_POS_WAIT('binlog.000022','592429')\G
- *************************** 1. row ***************************
- MASTER_POS_WAIT('binlog.000022','592429'): 0
MASTER_POS_WAIT的第一個參數是上面master的File值,第二個參數是上面master 的Position值。
如果返回值是0代表同步是成功的,如果為-1代表是超時退出。
3、對主服務器的操作:
- mysql> unlock tables;
按照以上的步驟執行完畢,就能夠解決MySQL數據庫主從服務器之間的差距問題了。