最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年02月12日 09:31:15   作者:wlmmmm  
今天小編就為大家分享一篇關(guān)于MySQL主從延遲現(xiàn)象及原理分析詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

一、現(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)鏈接

相關(guān)文章

  • 一篇文章帶你深入了解Mysql觸發(fā)器

    一篇文章帶你深入了解Mysql觸發(fā)器

    這篇文章主要介紹了MySQL觸發(fā)器概念、原理與用法,結(jié)合實例形勢詳細(xì)分析了mysql觸發(fā)器相關(guān)概念、原理、創(chuàng)建、用法及操作注意事項,需要的朋友可以參考下
    2021-08-08
  • ubuntu安裝Mysql數(shù)據(jù)庫及安全配置過程

    ubuntu安裝Mysql數(shù)據(jù)庫及安全配置過程

    本篇教程詳細(xì)介紹了在Ubuntu系統(tǒng)下下安裝MySQL數(shù)據(jù)庫的方法,包括設(shè)置root密碼、禁用匿名用戶、移除test數(shù)據(jù)庫等基本安全配置,并展示了如何增加普通賬號并賦予相應(yīng)權(quán)限,以及如何進(jìn)行遠(yuǎn)程訪問配置,適合初學(xué)者學(xué)習(xí)MySQL數(shù)據(jù)庫的安裝與基本配置
    2026-06-06
  • mysql的expire_logs_days參數(shù)引發(fā)的問題及解決

    mysql的expire_logs_days參數(shù)引發(fā)的問題及解決

    作者在重新配置MySQL主從復(fù)制時遇到問題,發(fā)現(xiàn)由于`expire_logs_days`參數(shù)設(shè)置不當(dāng)導(dǎo)致binlog文件被刪除,從而無法正確進(jìn)行主從同步,建議合理設(shè)置`expire_logs_days`和`max_binlog_size`
    2026-04-04
  • MySQL加索引會導(dǎo)致數(shù)據(jù)庫鎖表嗎

    MySQL加索引會導(dǎo)致數(shù)據(jù)庫鎖表嗎

    本文詳細(xì)介紹了MySQL在線DDL操作的機(jī)制,包括不同版本的影響、索引類型和操作方式對鎖表的影響,以及如何查看和監(jiān)控DDL操作的鎖機(jī)制,通過實際案例和最佳實踐,提供了在生產(chǎn)環(huán)境中高效執(zhí)行DDL操作的建議,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • MySQL 8中新增的這三大索引 隱藏、降序、函數(shù)

    MySQL 8中新增的這三大索引 隱藏、降序、函數(shù)

    這篇文章主要介紹了MySQL 8.x版本中新增的三大索引 隱藏索引、降索引序、函數(shù)索引,如果文章對你有點幫助,小伙伴們點贊、收藏、評論、分享走起呀
    2021-09-09
  • MySql插入數(shù)據(jù)成功但是報[Err] 1055錯誤的解決方案

    MySql插入數(shù)據(jù)成功但是報[Err] 1055錯誤的解決方案

    這篇文章主要介紹了MySql插入數(shù)據(jù)成功但是報[Err] 1055錯誤的解決方案,需要的朋友可以參考下
    2017-08-08
  • 基于sqlalchemy對mysql實現(xiàn)增刪改查操作

    基于sqlalchemy對mysql實現(xiàn)增刪改查操作

    這篇文章主要介紹了基于sqlalchemy對mysql實現(xiàn)增刪改查操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Mysql中SQL語句不使用索引的情況

    Mysql中SQL語句不使用索引的情況

    今天小編就為大家分享一篇關(guān)于Mysql中SQL語句不使用索引的情況,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL刪除數(shù)據(jù)庫的方法舉例

    MySQL刪除數(shù)據(jù)庫的方法舉例

    很久沒有使用命令行操作mysql,百度搜羅后重新整理,加強(qiáng)記憶便于查詢,下面這篇文章主要給大家介紹了關(guān)于MySQL刪除數(shù)據(jù)庫的相關(guān)資料,文中給出了詳細(xì)的實例代碼,需要的朋友可以參考下
    2023-04-04
  • mysql 5.7 數(shù)據(jù)庫安裝步驟個人總結(jié)

    mysql 5.7 數(shù)據(jù)庫安裝步驟個人總結(jié)

    這篇文章主要介紹了mysql 數(shù)據(jù)庫安裝步驟個人總結(jié),需要的朋友可以參考下
    2017-09-09

最新評論

曲沃县| 汶川县| 阳曲县| 象州县| 高要市| 肥乡县| 抚远县| 鄂州市| 灵寿县| 宝应县| 修武县| 西乌| 西华县| 沛县| 沈阳市| 普兰店市| 阜阳市| 肇州县| 游戏| 长阳| 汶川县| 舟山市| 呼伦贝尔市| 汕尾市| 贺兰县| 柳江县| 吉安市| 太保市| 玉山县| 房产| 舞钢市| 绍兴市| 凤山市| 监利县| 临猗县| 湖北省| 彭州市| 丰县| 永仁县| 广平县| 临江市|