1. 主從複製: (異步單線程)web
主庫-->binlog-->-->relaylog-->從庫sql
Master 上的 一個I/O線程,負責向Slave傳輸binary log (binlog)多線程
Slave 上2個線程:IO線程和執行sql的線程:架構
IO線程:將獲取的日誌信息,追加到relay log上;併發
執行SQL的線程:檢測到relay log中內容有更新,則在Slave上執行sql;異步
執行全部命令 只能在主庫上執行,從庫只有讀的功能,(若是從庫有寫功能,則主從很容易就中斷)ide
2.主從當出現錯誤時,主要先檢查從庫日誌:show slave status \G;優化
3.MySQL 集羣,常見方式:主從集羣spa
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(非搶佔模式)