主從複製的過程如下:
主庫執行事務記錄binlog,然後將binlog發送到從庫,最後從庫執行這個binlog。
主從延遲時間可以在從庫上使用show slave status進行查詢
主從延遲的主要原因:
1. 從庫機器的性能本來就比主庫差
2. 備庫壓力過大
3. 存在大事務
主備切換可靠性優先策略執行過程:
1. 判斷備庫B現在的seconds_behind_master,如果小於某個值(比如5秒)繼續下一步,否則持續重試這一步;
2. 把主庫A改成只讀狀態,即把readonly設置爲true;
3. 判斷備庫B的seconds_behind_master的值,直到這個值變成0爲止;
4. 把備庫B改成可讀寫狀態,也就是把readonly 設置爲false;
5. 把業務請求切到備庫B。
這個過程保證了數據一致,但是犧牲了一段時間的可用性(從2-5之間)
主備切換可用性優先策略執行過程:
就是說不等主備數據同步,直接把連接切到備庫B,並且讓備庫B可以讀寫,那麼系統幾乎就沒有不可用時間了,這樣可能發生主從不一致
MySQL實戰45講