您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關MySQL主從復制不一致的情況有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
1.網絡的延遲
由于mysql主從復制是基于binlog的一種異步復制,通過網絡傳送binlog文件,理所當然網絡延遲是主從不同步的絕大多數的原因,特別是跨機房的數據同步出現這種幾率非常的大,所以做讀寫分離,注意從業務層進行前期設計。
2.主從兩臺機器的負載不一致
由于mysql主從復制是主數據庫上面啟動1個io線程,而從上面啟動1個sql線程和1個io線程,當中任何一臺機器的負載很高,忙不過來,導致其中的任何一個線程出現資源不足,都將出現主從不一致的情況。
3.max_allowed_packet設置不一致
主數據庫上面設置的max_allowed_packet比從數據庫大,當一個大的sql語句,能在主數據庫上面執行完畢,從數據庫上面設置過小,無法執行,導致的主從不一致。
4.key自增鍵開始的鍵值跟自增步長設置不一致引起的主從不一致。
5.mysql異常宕機情況下,如果未設置sync_binlog=1或者innodb_flush_log_at_trx_commit=1很有可能出現binlog或者relaylog文件出現損壞,導致主從不一致。
6.mysql本身的bug引起的主從不同步。
7.版本不一致,特別是高版本是主,低版本為從的情況下,主數據庫上面支持的功能,從數據庫上面不支持該功能。
以上就是常見的一些主從不同步的情況。或許還有其他的一些不同步的情況,請說出你所遇到的主從不一致的情況。
基于以上情況,先保證max_allowed_packet、自增鍵開始點和增長點設置一致,再者犧牲部分性能在主上面開啟sync_binlog,對于采用innodb的庫,推薦配置下面的內容:
1)、innodb_flush_logs_at_trx_commit = 1
2)、innodb-support_xa = 1 # Mysql 5.0 以上
3)、innodb_safe_binlog # Mysql 4.0
同時在從數據庫上面推薦加入下面兩個參數:
1)、skip_slave_start
2)、read_only
8.主庫的從庫太多,導致復制延遲
從庫數據以3-5個為宜,要復制的從節點數量過多,會導致復制延遲
9.從庫硬件比主庫差,導致復制延遲
查看Master和Slave的系統配置,可能會因為機器配置不當,包括磁盤I/O、CPU、內存等各方面因素造成復制的延遲。一般發生在高并發大數據量寫入場景中
10.慢SQL語句過多
假如一條SQL語句執行時間是20秒,那么從執行完畢到從庫上能查到數據至少需要20秒,這樣就延遲20秒了。
一般要把SQL語句的優化作為常規工作不斷地進行監控和優化,如果單個SQL的寫入時間長,可以修改后分多次寫入。通過查看慢查詢日志或show full processlist命令,找出執行時間長的查詢語句或大的事務
11.主從復制的設計問題
例如主從復制單線程,如果主庫寫并發太大,來不及傳送到從庫,就會導致延遲。更高版本的Mysql可以支持多線程復制,門戶網站則會開發自己的多線程同步功能。
12.主從庫之間的網絡延遲
主從庫的網卡、網線、交換機等網絡設備都可能成為復制的瓶頸,導致復制延遲。另外,跨公網的主從復制很容易導致主從復制延遲
13.主庫讀寫壓力大,導致復制延遲
架構的前端要加buffer及緩存層
感謝各位的閱讀!關于“MySQL主從復制不一致的情況有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。