自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何檢查MySQL數(shù)據(jù)庫(kù)的主從延時(shí)?

數(shù)據(jù)庫(kù) MySQL
本文我們主要介紹了MySQL數(shù)據(jù)庫(kù)中檢查主從延時(shí)的兩種方法,Seconds_Behind_Master vs和mk-heartbeat,希望能夠?qū)δ兴鶐椭?/div>

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

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

方法1:

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

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

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

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

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

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

Seconds_Behind_Master是通過(guò)比較sql_thread執(zhí)行的event的timestamp和 io_thread復(fù)制好的event的timestamp(簡(jiǎn)寫(xiě)為ts)進(jìn)行比較,而得到的這么一個(gè)差值。我們都知道的relay-log和主庫(kù)的 bin-log里面的內(nèi)容完全一樣,在記錄sql語(yǔ)句的同時(shí)會(huì)被記錄上當(dāng)時(shí)的ts,所以比較參考的值來(lái)自于binlog,其實(shí)主從沒(méi)有必要與NTP進(jìn)行同步,也就是說(shuō)無(wú)需保證主從時(shí)鐘的一致。

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

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

方法2:

mk-heartbeat,Maatkit萬(wàn)能工具包中的一個(gè)工具,被認(rèn)為可以準(zhǔn)確判斷復(fù)制延時(shí)的方法。

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

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

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

關(guān)于檢查MySQL數(shù)據(jù)庫(kù)的主從延時(shí)的兩種方法就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. MySQL數(shù)據(jù)庫(kù)mysqlcheck的使用方法詳解
  2. Linux cron執(zhí)行MySQL失敗的問(wèn)題解決方案
  3. MySQL數(shù)據(jù)庫(kù)TIMESTAMP設(shè)置默認(rèn)值的靈活運(yùn)用
  4. MySQL性能優(yōu)化之使用Limit關(guān)鍵字來(lái)避免全表掃描
  5. MySQL數(shù)據(jù)庫(kù)TIMESTAMP設(shè)置默認(rèn)值的幾個(gè)應(yīng)用實(shí)例
責(zé)任編輯:趙鵬 來(lái)源: 博客園
相關(guān)推薦

2019-05-10 15:30:18

數(shù)據(jù)庫(kù)主從復(fù)制MySQL

2011-04-14 11:09:14

MySQL數(shù)據(jù)庫(kù)

2023-10-30 18:35:47

MySQL主從延時(shí)

2022-06-06 08:21:13

MySQL數(shù)據(jù)庫(kù)命令

2025-02-11 12:29:58

2011-04-06 09:59:00

MySQL數(shù)據(jù)庫(kù)主從復(fù)制

2021-05-19 08:21:09

MySQL數(shù)據(jù)庫(kù)GTID

2010-11-03 08:41:55

MySQL

2010-06-12 17:48:45

MySQL數(shù)據(jù)庫(kù)表

2010-06-09 14:04:34

MySQL數(shù)據(jù)庫(kù)

2017-01-17 15:14:49

MySQL數(shù)據(jù)庫(kù)自動(dòng)化

2024-10-21 08:21:12

數(shù)據(jù)庫(kù)主從延遲

2018-10-22 13:23:29

MySQL主從延時(shí)線程

2020-09-24 06:39:58

MySQL數(shù)據(jù)庫(kù)

2021-04-21 17:25:16

MySQL關(guān)系型數(shù)據(jù)庫(kù)

2010-06-01 12:51:23

MySQL數(shù)據(jù)庫(kù)

2011-07-28 14:49:40

2022-04-11 06:56:14

數(shù)據(jù)庫(kù)安全數(shù)據(jù)泄露

2021-01-26 13:40:44

mysql數(shù)據(jù)庫(kù)

2011-03-21 17:00:23

MySQL數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)