基於局域網的master/slave機制在通常情況下已經可以滿足'實時'備份的要求了。如果延遲比較大,就先確認以下幾個因素:
1. 網絡延遲
2. master負載
3. slave負載
一般的做法是,使用多台slave來分攤讀請求,再從這些slave中取一台專用的服務器,只作為備份用,不進行其他任何操作,就能相對最大限度地達到'實時'的要求了
另外,再介紹2個可以減少延遲的參數
–slave-net-timeout=seconds
參數含義:當slave從主數據庫讀取log數據失敗後,等待多久重新建立連接並獲取數據
slave_net_timeout單位為秒 默認設置為 3600秒
| slave_net_timeout | 3600
–master-connect-retry=seconds
參數含義:當重新建立主從連接時,如果連接建立失敗,間隔多久後重試。
master-connect-retry單位為秒 默認設置為 60秒
通常配置以上2個參數可以減少網絡問題導致的主從數據同步延遲
一般網絡問題的錯誤是:
070401 16:16:55 [ERROR] Error reading packet from server: Lost connection to MySQL server during query (server_errno=2013)
070401 16:16:55 [ERROR] Slave I/O thread: Failed reading log event, reconnecting to retry, log ‘mysql_master-bin.000134′ position 115817861