mysql擴展:主從原理及延遲

1.  主從複製:     (異步單線程)

主庫-->binlog-->-->relaylog-->從庫

Master 上的 一個I/O線程,負責向Slave傳輸binary log (binlog)

Slave 上2個線程:IO線程和執行sql的線程:

  • IO線:將獲取的日誌信息,追加到relay log上;


  • 執行SQL的線程:檢測到relay log中內容有更新,則在Slave上執行sql;

clipboard.png

1.png


執行所有命令 只能在主庫上執行,從庫只有讀的功能,(如果從庫有寫功能,則主從很容易就中斷)


2.主從當出現錯誤時,主要先檢查從庫日誌:show slave status \G;


3.MySQL 集羣,常見方式:主從集羣

  • Master 節點,負責所有的「寫請求」

  • Slave 節點,負責大部分的「讀請求」

主從集羣能夠降低訪問壓力,降低master的壓力,提高系統可用性。


常見的主從架構:

  • 一主一從:一個 Master,一個 Slave

  • 一主多從:一個 Master,多個 Slave


主從延遲

如何監控

監控主從延遲的方法有多種:

  1. Slave 使用本機當前時間,跟 Master 上 binlog 的時間戳比較

  2.  

  3. pt-heartbeatmt-heartbeat

本質:同一條 SQL,Master執行結束的時間 vs. Slave執行結束的時間。


主從延遲的原因:

master

a.大事務。

b.sql執行速度慢

c.批量DML操作


減弱延遲:

  1. 細化事務:將大事務拆爲小事務,不必要的地方移除事務     

    1. 提升 SQL 執行速度:優化索

    2. 減少批量操作:批量 DML 的耗時較多,減少不必要的批量 DML

  2. 降低多線程大事務併發的概率:優化業務邏輯


MySQL雙主(主主)

可以使用keepalived做兩臺主做高可用,高可用策略的時候,masterA或masterB均不因宕機恢復後而搶佔VIP(非搶佔模式)





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章