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

成都創(chuàng)新互聯(lián)是一家專(zhuān)注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃、小程序開(kāi)發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開(kāi)發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立10多年以來(lái),已經(jīng)為超過(guò)千家成都PVC花箱各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)。現(xiàn)在,服務(wù)的超過(guò)千家客戶(hù)與我們一路同行,見(jiàn)證我們的成長(zhǎng);未來(lái),我們一起分享成功的喜悅。
1.網(wǎng)絡(luò)的延遲
由于mysql主從復(fù)制是基于binlog的一種異步復(fù)制,通過(guò)網(wǎng)絡(luò)傳送binlog文件,理所當(dāng)然網(wǎng)絡(luò)延遲是主從不同步的絕大多數(shù)的原因,特別是跨機(jī)房的數(shù)據(jù)同步出現(xiàn)這種幾率非常的大,所以做讀寫(xiě)分離,注意從業(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ù)載很高,忙不過(guò)來(lái),導(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è)置過(guò)小,無(wú)法執(zhí)行,導(dǎo)致的主從不一致。
4.key自增鍵開(kāi)始的鍵值跟自增步長(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ù)上面不支持該功能。
以上就是常見(jiàn)的一些主從不同步的情況。或許還有其他的一些不同步的情況,請(qǐng)說(shuō)出你所遇到的主從不一致的情況。
基于以上情況,先保證max_allowed_packet、自增鍵開(kāi)始點(diǎn)和增長(zhǎng)點(diǎn)設(shè)置一致,再者犧牲部分性能在主上面開(kāi)啟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ù)量過(guò)多,會(huì)導(dǎo)致復(fù)制延遲
9.從庫(kù)硬件比主庫(kù)差,導(dǎo)致復(fù)制延遲
查看Master和Slave的系統(tǒng)配置,可能會(huì)因?yàn)闄C(jī)器配置不當(dāng),包括磁盤(pán)I/O、CPU、內(nèi)存等各方面因素造成復(fù)制的延遲。一般發(fā)生在高并發(fā)大數(shù)據(jù)量寫(xiě)入場(chǎng)景中
10.慢SQL語(yǔ)句過(guò)多
假如一條SQL語(yǔ)句執(zhí)行時(shí)間是20秒,那么從執(zhí)行完畢到從庫(kù)上能查到數(shù)據(jù)至少需要20秒,這樣就延遲20秒了。
一般要把SQL語(yǔ)句的優(yōu)化作為常規(guī)工作不斷地進(jìn)行監(jiān)控和優(yōu)化,如果單個(gè)SQL的寫(xiě)入時(shí)間長(zhǎng),可以修改后分多次寫(xiě)入。通過(guò)查看慢查詢(xún)?nèi)罩净騭how full processlist命令,找出執(zhí)行時(shí)間長(zhǎng)的查詢(xún)語(yǔ)句或大的事務(wù)
11.主從復(fù)制的設(shè)計(jì)問(wèn)題
例如主從復(fù)制單線程,如果主庫(kù)寫(xiě)并發(fā)太大,來(lái)不及傳送到從庫(kù),就會(huì)導(dǎo)致延遲。更高版本的Mysql可以支持多線程復(fù)制,門(mén)戶(hù)網(wǎng)站則會(huì)開(kāi)發(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ù)讀寫(xiě)壓力大,導(dǎo)致復(fù)制延遲
架構(gòu)的前端要加buffer及緩存層
感謝各位的閱讀!關(guān)于“MySQL主從復(fù)制不一致的情況有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
分享名稱(chēng):MySQL主從復(fù)制不一致的情況有哪些
URL地址:http://www.chinadenli.net/article8/geggop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、網(wǎng)站維護(hù)、服務(wù)器托管、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)