麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

MySQL主從延遲現象及原理分析詳解

2024-07-25 19:09:36
字體:
來源:轉載
供稿:網友

一、現象

凌晨對線上一張表添加索引,表數據量太大(1億+數據,數據量50G以上),造成主從延遲幾個小時,各個依賴從庫的系統無法查詢數據,最終影響業務。

現在就梳理下主從延遲的原理。

二、原理

根據 MySQL 官方文檔 MySQL Replication Implementation Details 中的描述,MySQL 主從復制依賴于三個線程:master一個線程(Binlog dump thread),slave兩個線程(I/O threadSQL thread)。主從復制流程如下圖:

MySQL,主從延遲

master 服務器和 slave 服務器連接時,創建Binlog dump thread以發送bin log數據:

  • 一個Binlog dump thread對應一個 slave 服務器;
  • Binlog dump threadbin log獲取數據時會加鎖,獲取到數據后,立即釋放鎖。

當 slave 服務器收到 START_SLAVE 命令時,會創建I/O threadSQL thread

  • I/O thread以拉的方式,從 master 讀取事件,并存儲到 slave 服務器的relay log中;
  • SQL threadrelay log中讀取事件并執行;
  • slave可以按照自己的節奏讀取和更新數據,也可以隨意操作復制進程(啟動和停止)。

注: START_SLAVE命令成功啟動線程后,如果后面I/O threadSQL thread因為某些原因停止,則不會有任何的警告,業務方無法感知。可以通過查看 slave 的 error 日志,或者通過 SHOW SLAVE STATUS 查看 slave 上的線程狀態。

通過 SHOW PROCESSLIST 可查看線程狀態:

Binlog dump thread:

mysql> SHOW PROCESSLIST/G*************************** 1. row ***************************  Id: 2 User: root Host: localhost:32931  db: NULLCommand: Binlog Dump Time: 94 State: Has sent all binlog to slave; waiting for binlog to   be updated Info: NULL

I/O thread 和 SQL thread:

mysql> SHOW PROCESSLIST/G*************************** 1. row ***************************  Id: 10 User: system user Host:  db: NULLCommand: Connect Time: 11 State: Waiting for master to send event Info: NULL *************************** 2. row ***************************  Id: 11 User: system user Host:  db: NULLCommand: Connect Time: 11 State: Has read all relay log; waiting for the slave I/O   thread to update it Info: NULL

三、分析

根據上面的原理,由于slave是單線程(I/O thread)讀取數據,單線程(SQL thread)更新數據,而master是多線程寫入,那么只要master寫入的頻率大于slave讀取更新的頻率,就有可能出現主從延遲的情況,如:

  1. master寫入tps較高,大于slave更新速度;
  2. slave執行某些語句耗時較長,如持有鎖等;
  3. master執行某些DDL語句時,執行的時間較長,在slave也執行相同的時間;

此處創建了索引,咨詢 DBA,產生的bin log文件有100多G,數據量太大,導致從庫I/O thread一直讀取DDL操作產生的bin log事件,而影響到正常的業務DML事件的更新,從而表現為主從同步延遲。

四、解決方案

從主從延遲的原因來看,解決方案可以從以下幾個方向入手:

  1. 業務選型,對于無法忍受從庫延遲的架構,可選擇分布式架構等,避開從庫延遲問題
  2. 執行時間,對大表進行線上DDL操作盡量選擇凌晨等業務量較小的時候
  3. 硬件配置,升級從庫硬件配置,如SSD
  4. 減少請求,增加緩存層,減少讀請求落庫

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九九热精品视频在线播放 | 视频在线亚洲 | 蜜桃一本色道久久综合亚洲精品冫 | 亚洲成人国产综合 | 久久久久久久黄色片 | 成人福利视频在线 | 黄a大片 | 国产午夜精品一区 | 精品中文字幕久久久久四十五十骆 | 女人久久久www免费人成看片 | 国产在线1区 | 欧美精品一区自拍a毛片在线视频 | 97青青草视频 | 久久精品a一级国产免视看成人 | 国产精品久久久久久久久久久久午夜 | 免费a级毛片大学生免费观看 | 精品在线免费播放 | 一级成人欧美一区在线观看 | 巨乳激情 | 国产亚洲精品成人a | 亚洲成人久久精品 | 7m视频成人精品分类 | 黄色免费小网站 | 日韩色电影 | 久久不射电影网 | 午夜亚洲影院 | 国产精品jk白丝蜜臀av软件 | 精品国产乱码久久久久久丨区2区 | 99国产精品国产免费观看 | 激情小说激情电影 | 久久久久久亚洲国产精品 | 国产三级三级三级三级 | 久久精品视频69 | 极色品影院 | 国产精品av久久久久久网址 | 男女隐私免费视频 | 最新亚洲国产 | 欧美成人精品一区二区 | 韩国精品视频在线观看 | lutube成人福利在线观看污 | h视频在线观看免费 |