欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

mysql之誤用SECONDS_BEHIND_MASTER衡量MYSQL主備的延遲時間

鏈接:http://www.woqutech.com/?p=1116

創(chuàng)新互聯(lián)憑借專業(yè)的設(shè)計團隊扎實的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識和豐厚的資源優(yōu)勢,提供專業(yè)的網(wǎng)站策劃、網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都10多年的網(wǎng)站建設(shè)設(shè)計經(jīng)驗,為成都近千家中小型企業(yè)策劃設(shè)計了網(wǎng)站。

 

MySQL 本身通過 show slave status 提供了 Seconds_Behind_Master ,用于衡量主備之間的復(fù)制延遲,但是今天碰到了一個場景,發(fā)現(xiàn) Seconds_Behind_Master 為 0 , 備庫的 show slave status 顯示 IO/SQL 線程都是正常的 , MySQL 的主庫上的變更卻長時間無法同步到備庫上。如果沒有人為干預(yù),直到一個小時以后,MySQL 才會自動重連主庫,繼續(xù)復(fù)制主庫的變更。

影響范圍: MySQL , Percona , MariaDB 的所有版本。

 

雖然這種場景非常特殊,遇到的概率并不高,但是個人覺得有必要提醒一下使用 MySQL 的 DBA 們。通過對這個場景的分析,也有助于我們更加深入的理解 MySQL replication 重試機制。

 

   一、重現(xiàn)步驟

搭建主備的復(fù)制,臨時斷開主庫的網(wǎng)絡(luò),并 kill 掉主庫 MySQL 的 binlog dump 線程。

此時觀察備庫的復(fù)制情況, show slave status 中:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Seconds_Behind_Master: 0

但是此時你把網(wǎng)絡(luò)恢復(fù)以后,在主庫做任何變更,備庫都無法獲得數(shù)據(jù)更新了。而且備庫上的show slave status 顯示: IO 線程 SQL 線程一切正常,復(fù)制延遲一直是 0 。

一切正常,普通的監(jiān)控軟件都不會發(fā)現(xiàn)備庫有數(shù)據(jù)延遲。

 

   二、原理分析

MySQL 的 Replication 是區(qū)別于其他數(shù)據(jù)庫很關(guān)鍵的地方。也是可擴展性和高可用的基礎(chǔ)。它本身已經(jīng)非常智能化,只需要我們調(diào)用 Change Master 指定 Binlog 文件名和偏移位置就可以搭建從主庫到備庫的復(fù)制關(guān)系。

MySQL 復(fù)制 線程 會自動將目前復(fù)制位置記錄下來,在主備復(fù)制中斷的時候自動連上主庫,并從上次中斷的位置重新開始復(fù)制。這些操作都是全自動化的,不需要人為的干預(yù)。這給了 MySQL DBA 帶來了很多便利,同時卻也隱藏了很多細節(jié)。

要真正的理解前面問題的真相以及怎么解決這個問題,我們還是需要真正的理解 MySQL  復(fù)制的原理。

 

   2.1“推”還是“拉”

首先, MySQL 的復(fù)制是“推”的,而不是“拉”的?!袄笔侵?nbsp;MySQL 的備庫不斷的循環(huán)詢問主庫是否有數(shù)據(jù)更新,這種方式資源消耗多,并且效率低。“推”是指 MySQL 的主庫在自己有數(shù)據(jù)更新的時候推送這個變更給備庫,這種方式只有在數(shù)據(jù)有變更的時候才會發(fā)生交互,資源消耗少。如果你是程序員出身,你一定會選擇“推”的方式。

那么 MySQL 具體是怎么“推”的列,實際上備庫在向主庫申請數(shù)據(jù)變更記錄的時候,需要指定從主庫Binlog 的哪個文件 ( MASTER_LOG_FILE ) 的具體多少個字節(jié)偏移位置 ( MASTER_LOG_POS ) 。對應(yīng)的,主庫會啟動一個 Binlog dump 的線程,將變更的記錄從這個位置開始一條一條的發(fā)給備庫。備庫一直監(jiān)聽主庫過來的變更,接收到一條,才會在本地應(yīng)用這個數(shù)據(jù)變更。

 

   2.2 原因解析

從上面的分析,我們可以大致猜到為什么 show slave status 顯示一切正常,但是實際上主庫的變更都無法同步到備庫上來:

出現(xiàn)問題的時候, Binlog dump 程序被我們 kill 掉了。作為監(jiān)聽的一方,備庫一直沒有收到任何變更,它會認為主庫上長時間沒有任何變更,導(dǎo)致沒有變更數(shù)據(jù)推送過來。備庫是無法判斷主庫上對應(yīng)的Binlog dump 線程 到底是意外終止了,還是長時間沒有任何數(shù)據(jù)變更的。所以,對這兩種情況來說,備庫都顯示為正常。

當然, MySQL 會盡量避免這種情況。比如:

l  在 Binlog dump 被 kill 掉時通知備庫 線程 被 kill 掉了。所以我們重現(xiàn)時需要保證這個通知發(fā)送不到備庫,也就是說該問題重現(xiàn)的關(guān)鍵在于 Binlog dump 被 kill 的消息由于網(wǎng)絡(luò)堵塞或者其他原因無法發(fā)送到備庫。

l  備庫如果長時間沒有收到從主庫過來的變更,它會每隔一段時間重連主庫。

 

   2.3 問題避免

基于上面的分析,我們知道 MySQL 在這種情況下確實無法避免,那么我們可以有哪些辦法可以避開列:

1.  被動處理:修改延遲的監(jiān)控方法,發(fā)現(xiàn)問題及時處理。

2.  主動預(yù)防:正確設(shè)置 --master-retry-count ,  --master-connect-retry ,  --slave-net-timeout 復(fù)制重試參數(shù)。

 

l  被動處理

MySQL 的延遲監(jiān)控大部分直接采集 show slave status 中的  Seconds_Behind_Master 。這種情況下,Seconds_Behind_Master 就無法用來真實的衡量主備之間的復(fù)制延遲了。我們建議通過在主庫輪詢插入時間信息,并通過復(fù)制到備庫的時間差來獲得主備延遲的方案。 Percona 提供了一種類似的方案 pt-heartbeat 。

發(fā)現(xiàn)這個問題以后,我們只需要 stop slave; start slave; 重啟復(fù)制就能解決這個問題。

 

l  主動預(yù)防

MySQL 可以指定三個參數(shù),用于復(fù)制線程重連主庫: --master-retry-count ,  --master-connect-retry ,  --slave-net-timeout 。

其中 master-connect-retry 和 master-retry-count 需要在 Change Master 搭建主備復(fù)制時指定,而 slave-net-timeout 是一個全局變量,可以在 MySQL 運行時在線設(shè)置。

具體的重試策略為:備庫過了 slave-net-timeout 秒還沒有收到主庫來的數(shù)據(jù),它就會開始第一次重試。然后每過 master-connect-retry 秒,備庫會再次嘗試重連主庫。直到重試了 master-retry-count 次,它才會放棄重試。如果重試的過程中,連上了主庫,那么它認為當前主庫是好的,又會開始 slave-net-timeout 秒的等待。

slave-net-timeout 的默認值是 3600 秒, master-connect-retry 默認為 60 秒, master-retry-count 默認為86400 次。也就是說,如果主庫一個小時都沒有任何數(shù)據(jù)變更發(fā)送過來,備庫才會嘗試重連主庫。這就是為什么在我們模擬的場景下,一個小時后,備庫才會重連主庫,繼續(xù)同步數(shù)據(jù)變更的原因。

這樣的話,如果你的主庫上變更比較頻繁,可以考慮將 slave-net-timeout 設(shè)置的小一點,避免主庫Binlog dump 線程 終止了,無法將最新的更新推送過來。

當然 slave-net-timeout 設(shè)置的過小也有問題,這樣會導(dǎo)致如果主庫的變更確實比較少的時候,備庫頻繁的重新連接主庫,造成資源浪費。

沃趣科技的 Q Monitor 監(jiān)控中對主備復(fù)制的延遲監(jiān)控,并不是通過 Seconds_Behind_Master 來監(jiān)控主備的。它采用了類似于 pt-heartbeat 的方式對主備進行復(fù)制延遲監(jiān)控。

網(wǎng)頁名稱:mysql之誤用SECONDS_BEHIND_MASTER衡量MYSQL主備的延遲時間
文章起源:http://aaarwkj.com/article10/pdeido.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、App設(shè)計、標簽優(yōu)化品牌網(wǎng)站設(shè)計、Google、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
成人午夜在线三级内射| 日韩精品欧美视频久久| 日本 午夜 在线 视频| 偷拍盗摄一区二区三区| 国产自拍偷拍自拍偷拍| 中文字幕一区侵犯人妻| 日韩国产精品亚洲欧美在线| 女优一区二区三区蜜桃| 五月激情丁香婷婷色网| 最近最新免费成人在线视频| 日本韩国欧美一区在线| 综合久久精品亚洲天堂| 亚洲精品乱码在线播放| 国产成人自拍激情视频| 岛国少妇av之中文字幕| 亚洲精品日本一区二区| av天堂男人站在线观看| 日本亚洲一区二区在线| 日韩欧美亚洲国产每日更新| 日韩精品免费一区二区三区| 国产精品无卡无在线播放| 中文字幕欧美日韩人妻| 国产精品自在线拍亚洲另类| 伊人性伊人情亚洲综合| 成年人免费久久毛片| 久久久久久狠狠亚洲综合| 在线 | 一区二区三区四区| 国产精品中文字幕有码| 黑人巨大精品欧美一区免| 亚洲欧洲美洲中文天堂| 亚洲最大成人av在线| 国产一区999精品在线| 久久婷婷精品国产亚洲av| 国产精品一区二区久久毛片| 日本丰满熟女毛茸茸的黑逼| 清纯少妇激情四射网站| 国产一区二区欧美日本| 欧美日韩精品综合国产| 福利视频一区二区视频| 亚洲欧美日韩专区一区| 欧美精品中出一区二区三区|