1. 主從複製: (異步單線程)
主庫-->binlog-->-->relaylog-->從庫
Master 上的 一個I/O線程,負責向Slave傳輸binary log (binlog)
Slave 上2個線程:IO線程和執行sql的線程:
IO線程:將獲取的日誌信息,追加到relay log上;
執行SQL的線程:檢測到relay log中內容有更新,則在Slave上執行sql;
執行所有命令 只能在主庫上執行,從庫只有讀的功能,(如果從庫有寫功能,則主從很容易就中斷)
2.主從當出現錯誤時,主要先檢查從庫日誌:show slave status \G;
3.MySQL 集羣,常見方式:主從集羣
Master 節點,負責所有的「寫請求」
Slave 節點,負責大部分的「讀請求」
主從集羣能夠降低訪問壓力,降低master的壓力,提高系統可用性。
常見的主從架構:
一主一從:一個 Master,一個 Slave
一主多從:一個 Master,多個 Slave
主從延遲
如何監控
監控主從延遲的方法有多種:
Slave 使用本機當前時間,跟 Master 上 binlog 的時間戳比較
pt-heartbeat
、mt-heartbeat
本質:同一條 SQL,Master
上執行結束
的時間 vs. Slave
上執行結束
的時間。
主從延遲的原因:
master上
a.大事務。
b.sql執行速度慢
c.批量DML操作
減弱延遲:
細化事務:將大事務拆爲小事務,不必要的地方移除事務
提升 SQL 執行速度:優化索
減少批量操作:批量 DML 的耗時較多,減少不必要的批量 DML
降低
多線程
大事務併發
的概率:優化業務邏輯
MySQL雙主(主主)
可以使用keepalived做兩臺主做高可用,高可用策略的時候,masterA或masterB均不因宕機恢復後而搶佔VIP(非搶佔模式)