婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL主從延遲現(xiàn)象及原理分析詳解

MySQL主從延遲現(xiàn)象及原理分析詳解

熱門標(biāo)簽:電話機(jī)器人市場趨勢 電銷機(jī)器人 行業(yè) 百度地圖標(biāo)注后不顯示 淄博400電話申請 南昌高頻外呼系統(tǒng)哪家公司做的好 溫州瑞安400電話怎么申請 俄國地圖標(biāo)注app 電銷機(jī)器人各個細(xì)節(jié)介紹 昆明電信400電話辦理

一、現(xiàn)象

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

現(xiàn)在就梳理下主從延遲的原理。

二、原理

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

master 服務(wù)器和 slave 服務(wù)器連接時,創(chuàng)建Binlog dump thread以發(fā)送bin log數(shù)據(jù):

  • 一個Binlog dump thread對應(yīng)一個 slave 服務(wù)器;
  • Binlog dump threadbin log獲取數(shù)據(jù)時會加鎖,獲取到數(shù)據(jù)后,立即釋放鎖。

當(dāng) slave 服務(wù)器收到 START_SLAVE 命令時,會創(chuàng)建I/O threadSQL thread

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

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

通過 SHOW PROCESSLIST 可查看線程狀態(tài):

Binlog dump thread:

mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
  Id: 2
 User: root
 Host: localhost:32931
  db: NULL
Command: 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: NULL
Command: Connect
 Time: 11
 State: Waiting for master to send event
 Info: NULL
 *************************** 2. row ***************************
  Id: 11
 User: system user
 Host:
  db: NULL
Command: Connect
 Time: 11
 State: Has read all relay log; waiting for the slave I/O
   thread to update it
 Info: NULL

三、分析

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

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

此處創(chuàng)建了索引,咨詢 DBA,產(chǎn)生的bin log文件有100多G,數(shù)據(jù)量太大,導(dǎo)致從庫I/O thread一直讀取DDL操作產(chǎn)生的bin log事件,而影響到正常的業(yè)務(wù)DML事件的更新,從而表現(xiàn)為主從同步延遲。

四、解決方案

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

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

您可能感興趣的文章:
  • MySQL主從復(fù)制延遲原因以及解決方案
  • MySQL5.6升級5.7時出現(xiàn)主從延遲問題排查過程
  • MySQL主從同步延遲的原因及解決辦法
  • MYSQL主從不同步延遲原理分析及解決方案
  • 減少mysql主從數(shù)據(jù)同步延遲問題的詳解
  • 深入mysql主從復(fù)制延遲問題的詳解
  • MySQL主從延遲問題解決

標(biāo)簽:吐魯番 洛陽 嘉峪關(guān) 葫蘆島 海口 甘南 拉薩 安徽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL主從延遲現(xiàn)象及原理分析詳解》,本文關(guān)鍵詞  MySQL,主從,延遲,現(xiàn)象,及,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL主從延遲現(xiàn)象及原理分析詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL主從延遲現(xiàn)象及原理分析詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章
    主站蜘蛛池模板: 井冈山市| 客服| 鄄城县| 溧水县| 成武县| 霍州市| 怀来县| 星座| 东山县| 新野县| 米易县| 香格里拉县| 育儿| 象山县| 湖北省| 蛟河市| 西和县| 八宿县| 承德县| 吴忠市| 忻州市| 阿勒泰市| 株洲县| 柳河县| 盐津县| 盐池县| 双柏县| 湘阴县| 中阳县| 仲巴县| 铁岭市| 垫江县| 大洼县| 龙陵县| 巧家县| 湖南省| 镇安县| 杭州市| 康定县| 平谷区| 昌图县|