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主從複製是基於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及快取層
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2135296/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何解決MySQL 主從複製資料不一致問題MySql
- 如何解決MySQL主從複製太慢的問題MySql
- MySQL的主從複製MySql
- mysql主從複製配置與問題解決MySql
- 以實際情況切入,檢視MySQL複製問題的解決方案MySql
- MySQL主從複製問題解決一例MySql
- MySQL主從複製原理及必備知識總結MySql
- mysql5.7主從複製,主主複製MySql
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- mysql複製--主從複製配置MySql
- MySQL主從複製MySql
- MySQL 的主從複製實踐MySql
- Mysql 8.4.0 結合 Docker 搭建GTID主從複製,以及傳統主從複製MySqlDocker
- 聊聊MySQL主從複製的幾種複製方式MySql
- mysql資料庫的主從複製和主主複製實踐MySql資料庫
- 為什麼mysql會經常出現主從同步不一致的情況MySql主從同步
- MySQL主從複製之GTID複製MySql
- MySQL主從複製原理MySql
- mysql--主從複製MySql
- mysql 8.4 主從複製MySql
- mysql主從複製搭建MySql
- mysql主從複製的理解和搭建MySql
- MySQL 主從複製的執行流程MySql
- mysql的主從複製 原理講解MySql
- MySQL 的主從複製(高階篇)MySql
- MySQL 5.7的安裝及主從複製(主從同步)MySql主從同步
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- MySQL++:Liunx - MySQL 主從複製MySql
- MySQL(13)---MYSQL主從複製原理MySql
- mysql主從複製(一):一主多從MySql
- 例項解讀:MySQL並行複製如何解決特定的主從問題?MySql並行
- mysql的主從複製延遲問題--看這一篇就夠了MySql
- MySQL 5.7基於GTID的主從複製MySql
- mysql 基於日誌的主從複製MySql
- 深入瞭解MySQL主從複製的原理MySql
- windows 下mysql主從複製WindowsMySql
- mysql實現主從複製MySql