久久精品A一国产成人免费网站-久久精品爱国产免费久久-久久精品操-久久精品成人免费看-国产一级毛片在线-国产一级免费片

 
您現在的位置:首頁 ? 知識庫 ? 系統集成 ? 數據庫維護 數據庫維護
這套方法論,徹底終結MySQL同步延遲問題
發布日期:2018-02-03

作者介紹 

張秀云,網名飛鴻無痕,現任職于騰訊,負責騰訊金融數據庫的運維和優化工作。2007年開始從事運維方面的工作,經歷過網絡管理員、Linux運維工程師、DBA、分布式存儲運維等多個IT職位。對Linux運維、MySQL數據庫、分布式存儲有豐富的經驗。簡書地址:

https://www.jianshu.com/u/9346dc2e9d3e

 

作為一名DBA,我們在工作中會經常遇到一些MySQL主從同步延遲的問題,這些同步慢的問題,其實原因非常多:可能是主從的網絡問題導致的,可能是網絡帶寬問題導致的,可能是大事務導致的,也可能是單線程復制導致的延遲。

 

近期筆者遇到了一個很典型的同步延遲問題,在此將分析過程寫出來,希望能夠為廣大DBA在排查同步延遲問題時提供比較系統的方法論。

 

一、背景 

 

最近有一組DB出現比較大的延遲,這組DB是專門用來存儲監控數據的,每分鐘會使用Load Data的方式導入大量的數據。為了節省空間,將原來使用壓縮表的InnoDB引擎轉換成了TokuDB引擎,使用的版本和引擎如下:

 

MySQL Version 5.7

Storage Engine TokuDB

 

轉換后,發現主從延遲逐漸增大,基本每天落后主機大概50binlog左右,大概延遲7.5個小時左右的數據,主機每天大概產生160binlogbinlog列表如下圖所示:

 


 

由于對該業務非常熟悉,因此很快就定位到造成主從同步延遲的原因,并很快就解決了延遲的問題。這里不直接說解決辦法,而是想描述一套完整的解決主從延遲問題的思考方式,和大家一起來系統的做一些思考。

 

帶著問題去思考延遲的根本原因和解決辦法,這也許會更有意義。授人以魚,不如授人以漁。接下來我們就一起開腦洞吧。

 

二、思考

 

首先,既然產生了主從延遲,就說明在從機上的消費速度趕不上主機binlog產生的速度。我們先來思考一下可能的原因,并根據現場的蛛絲馬跡去驗證猜想的正確性。其實所謂的問題排查,就是提出可能問題猜想,然后不斷去證明的過程。不同的是,每個人的經驗不同,排查的質量也不盡頭相同,僅此而已。

 

1、網絡

 

網絡可能導致主從延遲的問題,比如主機或者從機的帶寬打滿、主從之間網絡延遲很大,有可能會導致主上的binlog沒有全量傳輸到從機,造成延遲。

 

筆者的那組DBIO線程已經將對應的binlog近乎實時地拉取到了從機DB上,基本排除網絡導致的延遲,還可以結合網絡質量相關監控來進一步確認是網絡的問題。

 

2、機器性能

 

從機使用了爛機器?

 

之前有遇到過有的業務從機使用了很爛的機器,導致的主從延遲。比如主機使用SSD,而從機還是使用的SATA。從機用爛機器的觀念需要改改,隨著DB自動切換的需求越來越高,尤其是筆者所在的金融行業,從機至少不要比主機配置差。

 

從機高負載?

 

有很多業務會在從機上做統計,把從機服務器搞成高負載,從而造成從機延遲很大的情況,這種使用top命令即可快速發現。

 

從機磁盤有問題?

 

磁盤、Raid卡、調度策略有問題的情況下,有時會出現單個IO延遲很高的情況,比如Raid卡電池充放電時,在沒有設置強行write back的情況下得會將write back模式修改為write through

 

使用iostat命令查看DB數據盤的IO情況,是否是單個IO的執行時間很長、塊大小和磁盤隊列情況等,可以比較一下DB盤的IO調度規則以及塊大小的設置等。

 

使用iostat查看IO運行情況:

 


 

IO情況看也沒什么問題,單個IO延遲很小,IOPS很低,寫帶寬也不大。調度規則(cat /sys/block/fioa/queue/scheduler)和塊大小等和主機設置是一樣的,排除掉磁盤的問題。

 

從運行指標看,機器負載很低,機器性能也可以排除。

 

3、大事務

 

是否經常會有大事務?

 

這個可能DBA們會遇到比較多,比如在RBR模式下,執行帶有大量的Delete操作,或者在MBR模式下刪除時添加了不確定語句(類似limit)或一個表的Alter操作等,都會導致延遲情況的發生。

 

這種可通過查看Processlist相關信息,以及使用mysqlbinlog查看binlog中的SQL就能快速進行確認。這個設想也被排除。

 

4、鎖

 

鎖沖突問題也可能導致從機的SQL線程執行慢,比如從機上有一些select  ....  for updateSQL,或者使用了MyISAM引擎等。此類問題,可以通過抓去Processlist以及查看information_schema下面和鎖以及事務相關的表來查看。

 

經過排查也并未發現鎖的問題。

 

5、參數

 

參數部分使用如果是InnoDB引擎,可以根據自己的使用環境調整innodb_flush_log_at_trx_commitsync_binlog參數來提升復制速度,那組DB使用的TokuDB,則可以優化tokudb_commit_synctokudb_fsync_log_periodsync_binlog等參數來做調整。這些參數調整后,復制的延遲情況會有一些作用。

 

備注:這種調整可能會影響數據的安全性,需要結合業務來考慮。

 

6、多線程

 

多線程問題可能是DBA們遇到最多的問題,之前在5.15.5版本,MySQL的單線程復制瓶頸就廣受詬病。從5.6開始MySQL正式支持多線程復制。

 

很容易想到,如果是單線程同步的話,單個線程存在寫入瓶頸,導致主從延遲。那就先調整為多線程試試效果。

 

可以通過Show Processlist查看是否有多個同步線程,也可以查看參數的方式查看是否使用多線程(show variables like '%slave_parallel%'

 


 

當你看到是上圖這種結果時,恭喜你,你使用的是單線程。可使用下面那行命令改造成多線程復制:

STOP SLAVE SQL_THREAD;

SET GLOBAL

slave_parallel_type='LOGICAL_CLOCK';

SET GLOBAL

slave_parallel_workers=8;

START SLAVE SQL_THREAD;

 

改造后如下圖所示:

 


 

我的環境如上圖所示,本來就已經是多線程復制了,因此問題的根源也不在是否開啟多線程復制上。但當我使用Show Processlist查看復制狀態時,大多數情況下發現只有1SQL線程在執行,如下圖所示:

 


 

通過上面的圖可發現,基本都是一個線程在執行,那么可初步判定是多線程的威力沒有得到很好的發揮,為了更有力地說明問題,想辦法統計出來每個同步線程使用的比率。統計方法如下:

 

1、將線上從機相關統計打開(出于性能考慮默認是關閉的),打開方法如下:

UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_transactions%';

 

UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES'WHERE NAME = 'transaction';

 

2、創建一個查看各同步線程使用量的視圖,代碼如下:

 

USE test;

 

CREATE VIEW rep_thread_count AS SELECT a.THREAD_ID AS THREAD_ID,a.COUNT_STAR AS COUNT_STAR FROMperformance_schema.events_transactions_summary_by_thread_by_event_name a WHERE a.THREAD_ID in (SELECT b.THREAD_ID FROM performance_schema.replication_applier_status_by_worker b);

3、一段時間后統計各個同步線程使用比率,SQL如下:

SELECT SUM(COUNT_STAR) FROMrep_thread_count INTO @total;

 

SELECT 100*(COUNT_STAR/@total) AS thread_usage FROMrep_thread_count;

 

結果如下:



 

從上面的結果可以看出,絕大多數情況下,都是一個線程在跑,在監控這種存在大量數據導入的場景下肯定容易出現瓶頸。如果能提高各個線程并發執行的能力,也許能很好地改善同步延遲的情況,那如何解決呢?

 

7、組提交

 

我們不妨從多線程同步的原理來思考,在5.7中,多線程復制的功能有很很大的改善,支持LOGICAL_CLOCK的方式,在這種方式下,并發執行的多個事務只要能在同一時刻commit,就說明線程之間沒有鎖沖突,那么Master就可以將這一組的事務標記并在slave機器上安全的進行并發執行。

 

因此,可以盡可能地使所有線程能在同一時刻提交,這樣就能很大程度上提升從機的執行的并行度,從而減少從機的延遲。

 

有了這個猜想后,很自然想到了人為控制盡可能多地使所有線程在同一時刻提交,其實官方已經給我們提供了類似的參數,參數如下:

binlog_group_commit_sync_delay

 

備注:這個參數會對延遲SQL的響應,對延遲非常敏感的環境需要特別注意,單位是微秒。

 

參數說明見:

https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_binlog_group_commit_sync_delay

 

binlog_group_commit_sync_no_delay_count

 

備注:這個參數取到了一定的保護作用,在達到binlog_group_commit_sync_no_delay_count設定的值的時候,不管是否達到了binlog_group_commit_sync_delay設置定的閥值,都立即進行提交。

 

參數說明見:

https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_binlog_group_commit_sync_no_delay_count

 

由于是監控的DB,主要是load數據,然后進行展示,1秒左右的導入延遲對業務沒什么影響,因此將兩個參數調整為:

SET GLOBAL binlog_group_commit_sync_delay = 1000000;

SET GLOBAL binlog_group_commit_sync_no_delay_count = 20;

 

備注:這兩個參數請根據業務特性進行調整,以免造成線上故障。

 

為了防止導入SQL堆積,設置SET GLOBAL binlog_group_commit_sync_no_delay_count20,在達到20個事務時不管是否達到了1秒都進行提交,來減少對業務的影響。

 

設置完這兩個參數后,發現并發復制瞬間提升了好多,很多時候8個線程都能跑滿。于是將線程調整到16個。運行一段事件后,再次統計各個同步線程的使用比率,發現并發度提升了非常多,新的比率如下圖所示:

 


 

通過show slave status查看,發現從機延遲越來越小,目前已經完全追上,并穩定運行了一周。

 

三、總結

 

最后簡單總結一下,在遇到主從延遲的問題時,可從以下幾個地方開腦洞,尋找蛛絲馬跡,找到問題的根源,對癥下藥才能藥到病除,排查范圍包括但不限于如下幾方面:

網絡方面

性能方面

配置方面(參數優化)

大事務

多線程復制

組提交

 

通過上面對整個問題排查的梳理,希望能夠幫助廣大DBA在遇到類似復制延遲的問題時徹底終結問題。

 

參考資料

https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html

 

https://www.percona.com/blog/2016/02/10/estimating-potential-for-mysql-5-7-parallel-replication/

  • 1.公司登記注冊于2003年1月27日,清遠市桑達電子網絡媒體有限公司
    2.公司2006年起成為清遠市政府定點協議供貨商,電子采購供貨商
    3.公司2007年被清遠市相關政府部門評為安防行業狀元
    4.公司2007年起成為長城電腦清遠如意服務站(SP368)
    5.公司2007年承建清遠市橫河路口電子警察工程,開創清遠電子警察先河。
  • 6.公司2007年起成為IBM合作伙伴、公司2010年底成為金蝶軟件清遠金牌代理(伙伴編號:30030013)
    7.公司組團隊參加南方都市報組織的創富評選,獲廣東80強。公司申請多項軟件著作權、專利權
    8.2016年起公司成為粵東西北地區為數不多的雙軟企業,確立“讓軟件驅動世界,讓智能改變生活!"企業理想
    9.2016-01-29更名為廣東互動電子網絡媒體有限公司
    10.2021-01-13更名為廣東互動電子有限公司
  • 投資合作咨詢熱線電話:0763-3391888 3323588
  • 做一個負責任的百年企業! 天行健,君子以自強不息;地勢坤,君子以厚德載物;
    為用戶創造價值! 讓軟件驅動世界; 讓智能改變生活; 超越顧客期望,幫助顧客成功;
    對客戶負責,對員工負責,對企業命運負責!幫助支持公司的客戶成功;幫助忠誠于公司的員工成功!
  • 聯系電話:0763-3391888 3323588 3318977
    服務熱線:18023314222 QQ:529623964
  • 工作QQ:2501204690 商務QQ: 602045550
    投資及業務投訴QQ: 529623964
    微信:小米哥 微信號:qysed3391888
    騰訊微博:桑達網絡-基石與起點
  • E-MAIL:222#QYSED.CN ok3391888#163.com (請用@替換#)
在線客服
  • 系統集成咨詢
    點擊這里給我發消息
  • 網站\微信\軟件咨詢
    點擊這里給我發消息
  • 售后服務
    點擊這里給我發消息
  • 投資合作
    點擊這里給我發消息
精品国产亚洲AV麻豆映画| 99久久夜色精品国产网站| 狠狠色综合久久丁香婷婷| 性爱xxxx在线xxxx欧美| 国产成人精品视频网站| 双方夫妻一起互动交流做| 丰满少妇被猛烈高清播放| 搡老女人老妇女老熟妇| 肥胖BMGBMGBMG多毛图片| 色多多WWW视频在线观看免费| 白丝制服被啪到喷水很黄很暴力 | 少妇厨房愉情理伦片BD在线观看| 成人一区二区三区| 日日躁夜夜躁狠狠久久AV| 吃瓜爆料网不打烊| 日韩AⅤ无码AV一区二区三区| 成人爽A毛片在线视频| 三上悠亚SSNL-618无码播| 丰满熟女一区二区三区蜜桃臀| 牲交A欧美牲交AⅤ免费一| 国产成人免费ā片在线观看老同学| 天天做日日做天天添天天欢公交车| 国产放荡AV剧情演绎麻豆| 无码人妻丰满熟妇奶水区码| 国产熟女一区视频在线播放| 亚洲AV无码国产精品麻豆天美| 激情综合一区二区迷情校园| 亚洲色偷偷综合亚洲AV| 久久亚洲国产成人精品性色| 最新在线精品国产福利| 奇米第四色777ME| 成熟交BGMBGMBGM的价格| 私密按摩高潮熟女啪啪 | 久久99精品久久久久麻豆| 夜色毛片永久免费| 男阳茎进女阳道啪啪| 把腿张开老子臊烂你在线观看| 日韩欧美群交P内射捆绑| 国产成人无码AV在线播放DVD | 7X7X7X任意槽2023进口| 欧美又粗又大BBBB疯视频AV| 成人精品一区二区www| 图片小说视频一区二区| 好儿子妈妈今后就是你的人| 亚洲人午夜射精精品日韩 | 宝贝对着镜子CAO好不好| 视频视频APP在线看| 国产在线乱子伦一区二区| 亚洲一区二区三区成人网站| 女人大胆张开荫道口∞| 成人免费无码大片A毛片抽搐| 玩小雪跪趴把腿分到最大影视| 好大好厉害我接了一个顾客| 泑女网址WWW呦女| 欧洲一卡2卡3卡4卡乱码视频| 二三四五六七无产乱码| 亚洲AV成人一区二区三区观看在| 久久久久久精品免费免费4K| AV天堂久久天堂色综合| 熟妇人交VIDEOS复古| 黑人与亚洲女人XXXXXXXⅩ| 一边下奶一边吃面膜视频讲解| 欧美性大战久久久久久| 国产成人综合在线视频| 亚洲女同成AV人片在线观看| 你的婚礼免费观看完整版| 非洲黑人吊巨大VS亚洲女| 亚洲AV无码成人专区| 蜜桃无码一区二区三区| 丰满人妻被中出中文字幕| 亚洲AV无码之国产精品| 蜜乳AV一区二区三区四区| 抽出含了一整夜的性器液体流出| 亚洲AV无码专区亚洲AV紧身裤| 可以差差差的视频无掩盖| 成人AV在线播放| 亚洲AV永久纯肉无码精品动漫| 免费观看的A级毛片的网站| 丁香花在线观看免费高清版| 亚洲成人Av在线| 欧美视频二区欧美影视| 国产精品一区二区香蕉| 在线天堂网WWW天堂在线| 色老板精品无码免费视频| 精品第一国产综合精品蜜芽 | 国产麻花豆剧传媒精品MV在线| 一本一本久久A久久综合精品| 日本真人边吃奶边做爽动态图| 国内精品久久久久久久影视麻豆 | 天天看高清影视在线观看| 久久成人麻豆午夜电影| 被主人调教边C边打屁股作文| 亚洲AV无一区二区三区| 欧美激情精品久久久久久黑人| 国产精品亚洲А∨无码播放| 在线观看无码AV网站永久| 四虎成人精品一区二区免费网站| 久久久久久精品免费免费4K| 粗大的内捧猛烈进出少妇| 亚洲乱码一区二三四区AVA | 亚洲国产成人久久综合| 欧美激情在线播放| 国产性大战XXXXX久久久| 99精品久久久久久久另类| 无遮挡粉嫩小泬女视频| 男人J放进女人P全黄动态图| 国产精品丝袜一区二区三区 | 国产精品毛片无码一区二区蜜桃| 中文字幕丰满乱子无码视频| 无翼乌之无遮全彩浩君奶| 女少18XⅩXX性XXXXHD| 国产又色又爽又刺激在线观看 | 国产高潮视频在线观看| 最新欧美精品一区二区三区 | 欧美色欧美亚洲另类二区| 狠狠色噜噜狠狠狠888777米| 被青梅竹马的学弟给锁定了林擎霄| 亚洲精品欧美综合四区| 色鬼7777久久| 老师掀起裙子让我挺进| 国产精品亚洲专区无码蜜芽| 99久久精品国产一区二区| 亚洲国产精品无码成人片久久| 日韩AV片无码一区二区三区不卡 | 亚洲中文字幕无码久久综合网| 少妇人妻88久久中文字幕| 麻豆国内剧情AV在线素人搭讪 | 影音先锋中文字幕人妻| 无码日韩精品一区二区三区免费| 欧美成人综合久久精品| 精品久久久久久国产| 国产 校园 另类 小说区| 中文字幕精品无码一区二区三区| 亚洲AV丰满熟妇在线播放| 日韩精品人妻AV一区二区三区| 撩起老师旗袍挺进去玉足| 国产又黄又大又粗视频| 东京热人妻无码一区二区AV| 1000部又爽又黄无遮挡的视频| 亚洲成AV人片在线观看WWW| 色综合精品无码一区二区三区| 男人进入女人下部图| 久久69国产精品久久69软件| 国产精品毛片无遮挡| 草莓视频APP在线下载| 中年人妻丰满AV无码久久不卡| 亚洲AV无码乱码精品国产| 少洁白妇无删减全文阅读| 欧美另类精品黑人巨大| 久久青草精品38国产| 国产又色又刺激高潮免费视频试看| 成熟丰满女人丰满妇女aⅴ| 666西方最大但人文艺术| 亚洲人成无码网WWW电影麻豆| 侮辱丰满美丽的人妻| 三上悠亚公侵犯344在线观看| 女性高爱潮AAAA级视频免费| 久久久久精品午夜福利| 好吊色欧美一区二区三区视频| 国产成人无码精品久久二区三区| 八戒.八戒电影免费观看| 中文字幕亚洲综合久久蜜桃| 亚洲色大18成人网站WWW| 小莫骚麦歌曲播放MP3| 四虎影视新紧急入口| 日本精品一线二线三线区别在哪里 | 国产色婷婷五月精品综合在线| 丰满护士巨好爽好大乳小说| www.五月丁香| 696969大但人文艺术主题| 亚洲日韩AV无码中文字幕美国| 亚洲AV成人在线| 无码人妻丰满熟妇啪啪| 舌头伸进去添的我好爽高潮电影| 欧洲老人毛多BBWBBWBBW| 奶头大他一口都含不住 | 赤裸人妻撅起肥白大屁股| 三级特黄60分钟在线播放2| 欧美黑人XXXX性高清版| 军人边走边吮她的花蒂| 亚洲成成熟女人专区| FREEHDXXXX学生妹| 双乳被一左一右的吸着| 日韩内射美女人妻一区二区三区 | 爆乳护士HD完整版在线播放| 99久久综合狠狠综合久久| 中国另类丰满熟妇乱XXXXX| 一二三四免费观看在线电影二| 亚洲日韩国产AV无码无码精品| 亚洲春色CAMELTOE一区| 亚洲AV无码卡通动漫AV| 亚洲AV无码精品国产成人| 亚A∨国AV综AV涩涩涩| 西西人体44WWW高清大胆| 无线乱码一二三区免费看| 无码专区国产精品视频| 无码人妻精品一区二区蜜桃AV| 我趁老师喝醉后玩弄她的身体| 天天在线看无码AV片| 玩弄丰满少妇XXXXX|