亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發(fā)消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術(shù)支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

檢查MySQL數(shù)據(jù)庫的主從延時的方法

添加時間:2012-6-25  添加: admin 

MySQL數(shù)據(jù)庫主從延時如何去判斷呢?本文我們介紹了兩種判斷方法:1. Seconds_Behind_Master vs 2. mk-heartbeat,接下來我們就分別介紹這些內(nèi)容。

日常工作中,對于MySQL主從復(fù)制檢查,一方面我們要保證復(fù)制的整體結(jié)構(gòu)是否正常,另一方面需要檢查主從數(shù)據(jù)是否保持一致。對于前者我們可以通過監(jiān)控復(fù)制線程是否工作正常以及主從延時是否在容忍范圍內(nèi),對于后者則可以通過分別校驗主從表中數(shù)據(jù)的md5碼是否一致,來保證數(shù)據(jù)一致,可以使用Maatkit工具包中的mk-table- checksum工具去檢查。

方法1:

通過監(jiān)控show slave status\G命令輸出的Seconds_Behind_Master參數(shù)的值來判斷,是否有發(fā)生主從延時。其值有這么幾種:

NULL — 表示io_thread或是sql_thread有任何一個發(fā)生故障,也就是該線程的Running狀態(tài)是No,而非Yes。

0 — 該值為零,是我們極為渴望看到的情況,表示主從復(fù)制良好,可以認為lag不存在。

正值 — 表示主從已經(jīng)出現(xiàn)延時,數(shù)字越大表示從庫落后主庫越多。

負值 — 幾乎很少見,我只是聽一些資深的DBA說見過,其實,這是一個BUG值,該參數(shù)是不支持負值的,也就是不應(yīng)該出現(xiàn)。

show slave status\G,該命令的輸出結(jié)果非常豐厚,給我們的監(jiān)控提供了很多有意義的參數(shù),比如:Slave_IO_Running該參數(shù)可作為 io_thread的監(jiān)控項,Yes表示io_thread的和主庫連接正常并能實施復(fù)制工作,No則說明與主庫通訊異常,多數(shù)情況是由主從間網(wǎng)絡(luò)引起的問題;Slave_SQL_Running該參數(shù)代表sql_thread是否正常,具體就是語句是否執(zhí)行通過,常會遇到主鍵重復(fù)或是某個表不存在。下面就說到今天的重點Seconds_Behind_Master,該值作為判斷主從延時的指標,那么它又是怎么得到這個值的呢,同時,它為什么又受到很多人的質(zhì)疑?

Seconds_Behind_Master是通過比較sql_thread執(zhí)行的event的timestamp和 io_thread復(fù)制好的event的timestamp(簡寫為ts)進行比較,而得到的這么一個差值。我們都知道的relay-log和主庫的 bin-log里面的內(nèi)容完全一樣,在記錄sql語句的同時會被記錄上當時的ts,所以比較參考的值來自于binlog,其實主從沒有必要與NTP進行同步,也就是說無需保證主從時鐘的一致。

你也會發(fā)現(xiàn),其實比較真正是發(fā)生在io_thread與sql_thread之間,而io_thread才真正與主庫有關(guān)聯(lián),于是,問題就出來了,當主庫I/O負載很大或是網(wǎng)絡(luò)阻塞,io_thread不能及時復(fù)制binlog(沒有中斷,也在復(fù)制),而 sql_thread一直都能跟上io_thread的腳本,這時Seconds_Behind_Master的值是0,也就是我們認為的無延時,但是,實際上不是,你懂得。這也就是為什么大家要批判用這個參數(shù)來監(jiān)控數(shù)據(jù)庫是否發(fā)生延時不準的原因,但是這個值并不是總是不準,如果當io_thread與 master網(wǎng)絡(luò)很好的情況下,那么該值也是很有價值的。

之前,提到Seconds_Behind_Master這個參數(shù)會有負值出現(xiàn),我們已經(jīng)知道該值是io_thread的最近跟新的ts與sql_thread執(zhí)行到的ts差值,前者始終是大于后者的,唯一的肯能就是某個event的ts發(fā)生了錯誤,比之前的小了,那么當這種情況發(fā)生時,負值出現(xiàn)就成為可能。

方法2:

mk-heartbeat,Maatkit萬能工具包中的一個工具,被認為可以準確判斷復(fù)制延時的方法。

mk-heartbeat的實現(xiàn)也是借助timestmp的比較實現(xiàn)的,它首先需要保證主從服務(wù)器必須要保持一致,通過與相同的一個NTP server同步時鐘。它需要在主庫上創(chuàng)建一個heartbeat的表,里面至少有id與ts兩個字段,id為server_id,ts就是當前的時間戳 now(),該結(jié)構(gòu)也會被復(fù)制到從庫上。

表建好以后,會在主庫上以后臺進程的模式去執(zhí)行一行更新操作的命令,定期去向表中的插入數(shù)據(jù),這個周期默認為1 秒,同時從庫也會在后臺執(zhí)行一個監(jiān)控命令,與主庫保持一致的周期去比較,復(fù)制過來記錄的ts值與主庫上的同一條ts值,差值為0表示無延時,差值越大表示延時的秒數(shù)越多。

我們都知道復(fù)制是異步的ts不肯完全一致,所以該工具允許半秒的差距,在這之內(nèi)的差異都可忽略認為無延時。這個工具就是通過實打?qū)嵉膹?fù)制,巧妙的借用timestamp來檢查延時,非常好用!

關(guān)鍵字:檢查、MySQL、主從延時、方法

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報有獎  警警  手機打開網(wǎng)站