溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL主從復(fù)制不一致的情況有哪些

發(fā)布時(shí)間:2021-11-08 09:47:21 來源:億速云 閱讀:145 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

這篇文章給大家分享的是有關(guān)MySQL主從復(fù)制不一致的情況有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

1.網(wǎng)絡(luò)的延遲
由于mysql主從復(fù)制是基于binlog的一種異步復(fù)制,通過網(wǎng)絡(luò)傳送binlog文件,理所當(dāng)然網(wǎng)絡(luò)延遲是主從不同步的絕大多數(shù)的原因,特別是跨機(jī)房的數(shù)據(jù)同步出現(xiàn)這種幾率非常的大,所以做讀寫分離,注意從業(yè)務(wù)層進(jìn)行前期設(shè)計(jì)。

2.主從兩臺(tái)機(jī)器的負(fù)載不一致
由于mysql主從復(fù)制是主數(shù)據(jù)庫(kù)上面啟動(dòng)1個(gè)io線程,而從上面啟動(dòng)1個(gè)sql線程和1個(gè)io線程,當(dāng)中任何一臺(tái)機(jī)器的負(fù)載很高,忙不過來,導(dǎo)致其中的任何一個(gè)線程出現(xiàn)資源不足,都將出現(xiàn)主從不一致的情況。

3.max_allowed_packet設(shè)置不一致
主數(shù)據(jù)庫(kù)上面設(shè)置的max_allowed_packet比從數(shù)據(jù)庫(kù)大,當(dāng)一個(gè)大的sql語(yǔ)句,能在主數(shù)據(jù)庫(kù)上面執(zhí)行完畢,從數(shù)據(jù)庫(kù)上面設(shè)置過小,無法執(zhí)行,導(dǎo)致的主從不一致。
4.key自增鍵開始的鍵值跟自增步長(zhǎng)設(shè)置不一致引起的主從不一致。

5.mysql異常宕機(jī)情況下,如果未設(shè)置sync_binlog=1或者innodb_flush_log_at_trx_commit=1很有可能出現(xiàn)binlog或者relaylog文件出現(xiàn)損壞,導(dǎo)致主從不一致。

6.mysql本身的bug引起的主從不同步。

7.版本不一致,特別是高版本是主,低版本為從的情況下,主數(shù)據(jù)庫(kù)上面支持的功能,從數(shù)據(jù)庫(kù)上面不支持該功能。
以上就是常見的一些主從不同步的情況?;蛟S還有其他的一些不同步的情況,請(qǐng)說出你所遇到的主從不一致的情況。
基于以上情況,先保證max_allowed_packet、自增鍵開始點(diǎn)和增長(zhǎng)點(diǎn)設(shè)置一致,再者犧牲部分性能在主上面開啟sync_binlog,對(duì)于采用innodb的庫(kù),推薦配置下面的內(nèi)容:
1)、innodb_flush_logs_at_trx_commit = 1
2)、innodb-support_xa = 1 # Mysql 5.0 以上
3)、innodb_safe_binlog      # Mysql 4.0
同時(shí)在從數(shù)據(jù)庫(kù)上面推薦加入下面兩個(gè)參數(shù):
1)、skip_slave_start
2)、read_only

8.主庫(kù)的從庫(kù)太多,導(dǎo)致復(fù)制延遲
從庫(kù)數(shù)據(jù)以3-5個(gè)為宜,要復(fù)制的從節(jié)點(diǎn)數(shù)量過多,會(huì)導(dǎo)致復(fù)制延遲

9.從庫(kù)硬件比主庫(kù)差,導(dǎo)致復(fù)制延遲
查看Master和Slave的系統(tǒng)配置,可能會(huì)因?yàn)闄C(jī)器配置不當(dāng),包括磁盤I/O、CPU、內(nèi)存等各方面因素造成復(fù)制的延遲。一般發(fā)生在高并發(fā)大數(shù)據(jù)量寫入場(chǎng)景中

10.慢SQL語(yǔ)句過多
假如一條SQL語(yǔ)句執(zhí)行時(shí)間是20秒,那么從執(zhí)行完畢到從庫(kù)上能查到數(shù)據(jù)至少需要20秒,這樣就延遲20秒了。
一般要把SQL語(yǔ)句的優(yōu)化作為常規(guī)工作不斷地進(jìn)行監(jiān)控和優(yōu)化,如果單個(gè)SQL的寫入時(shí)間長(zhǎng),可以修改后分多次寫入。通過查看慢查詢?nèi)罩净騭how full processlist命令,找出執(zhí)行時(shí)間長(zhǎng)的查詢語(yǔ)句或大的事務(wù)

11.主從復(fù)制的設(shè)計(jì)問題
例如主從復(fù)制單線程,如果主庫(kù)寫并發(fā)太大,來不及傳送到從庫(kù),就會(huì)導(dǎo)致延遲。更高版本的Mysql可以支持多線程復(fù)制,門戶網(wǎng)站則會(huì)開發(fā)自己的多線程同步功能。

12.主從庫(kù)之間的網(wǎng)絡(luò)延遲
主從庫(kù)的網(wǎng)卡、網(wǎng)線、交換機(jī)等網(wǎng)絡(luò)設(shè)備都可能成為復(fù)制的瓶頸,導(dǎo)致復(fù)制延遲。另外,跨公網(wǎng)的主從復(fù)制很容易導(dǎo)致主從復(fù)制延遲

13.主庫(kù)讀寫壓力大,導(dǎo)致復(fù)制延遲
架構(gòu)的前端要加buffer及緩存層


感謝各位的閱讀!關(guān)于“MySQL主從復(fù)制不一致的情況有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI