MySQL主從複製歷程
在很多場景下,MySQL 的高可用都是藉助主從複製實現的,而 MySQL 複製不斷的演進,也使得她越來越受歡迎。
1 三種日誌格式對複製的影響
1.1 開始支援複製
MySQL 從 3.23 版本開始支援複製,但是在 5.1.5 之前只支援 statement 格式的複製,儘管這種模式下,binlog 日誌量相對比較少,但是涉及到跨庫更新、或者使用結果不確定的函式時,比如 UUID(),容易出現主從資料不一致的情況。
1.2 開始支援 Row 格式的複製
從 MySQL 5.1.5 開始,新增了 Row 格式,日誌中會記錄每一行資料被修改的形式,因此 Row 格式下的複製,主從之間的資料一致性保障得到了大幅度提升,但是缺點是 binlog 日誌量相對 statement 較多。
1.3 新增 mixed 格式
從 MySQL 5.1.8 開始新增 mixed 格式,當可能造成主從資料不一致的 SQL 時,binlog 使用 row 格式記錄,否則使用 statement 格式記錄。顯然這種格式下,日誌量是介於 statement 和 row 格式之間的。
2 半同步複製
2.1 非同步複製
傳統的 MySQL 複製為非同步複製,其原理如下:
-
在主庫開啟 binlog 的情況下;
-
如果主庫有變更操作,會記錄到 binlog 中;
-
主庫通過 IO 執行緒把 binlog 裡面的內容傳給從庫的中繼日誌(relay log)中;
-
主庫給客戶端返回 commit 成功(這裡不管從庫是否已經收到了事務的 binlog);
-
從庫的 SQL 執行緒負責讀取它的 relay log 裡的資訊並應用到從庫資料庫中。
其過程如下圖:
2.2 半同步複製
-
在主庫開啟 binlog 的情況下; -
如果主庫有增刪改的語句,會記錄到 binlog 中; -
主庫通過 IO 執行緒把 binlog 裡面的內容傳給從庫的中繼日誌(relay log)中; -
從庫收到 binlog 後,傳送給主庫一個 ACK,表示收到了; -
主庫收到這個 ACK 以後,才能給客戶端返回 commit 成功; -
從庫的 SQL 執行緒負責讀取它的 relay log 裡的資訊並應用到從庫資料庫中。
2.3 增強半同步複製
3 組複製
4 並行複製
4.1 MySQL 5.6 的並行複製
4.2 MySQL 5.7 的並行複製
4.3 MySQL 5.7.22 的並行複製
-
COMMIT_ORDER,表示的就是前面介紹的,根據同時進入 prepare 和 commit 來判斷是否可以並行的策略。 -
WRITESET,表示的是對於事務涉及更新的每一行,計算出這一行的 hash 值,組成集合 writeset。如果兩個事務沒有操作相同的行,也就是說它們的 writeset 沒有交集,就可以並行。 -
WRITESET_SESSION,是在 WRITESET 的基礎上多了一個約束,即在主庫上同一個執行緒先後執行的兩個事務,在備庫執行的時候,要保證相同的先後順序。
5 基於 GTID 的複製
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在個人微 信公眾號( DB寶)上有同步更新 ● QQ群號: 230161599 、618766405,微信群私聊 ● 個人QQ號(646634621),微 訊號(db_bao),註明新增緣由 ● 於 2020年11月完成 ● 最新修改時間:2020年11月 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店: https://weidian.com/s/793741433?wfr=c&ifr=shopdetail ● 小麥苗出版的資料庫類叢書: http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用、DBA學習班: http://blog.itpub.net/26736162/viewspace-2148098/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ........................................................................................................................ 請掃描下面的二維碼來關注小麥苗的微 信公眾號( DB寶)及QQ群(230161599、618766405)、新增小麥苗微 信(db_bao), 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2734424/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql5.7主從複製,主主複製MySql
- mysql複製--主從複製配置MySql
- MySQL主從複製MySql
- MySQL主從複製之GTID複製MySql
- MySQL主從複製原理MySql
- MySQL的主從複製MySql
- mysql--主從複製MySql
- mysql 8.4 主從複製MySql
- mysql主從複製搭建MySql
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- Linux下MySQL主從複製(Binlog)的部署過程LinuxMySql
- MySQL++:Liunx - MySQL 主從複製MySql
- MySQL(13)---MYSQL主從複製原理MySql
- mysql主從複製(一):一主多從MySql
- windows 下mysql主從複製WindowsMySql
- mysql實現主從複製MySql
- mysql主從延遲複製MySql
- MySQL 主從複製實操MySql
- MYSQL主從複製配置(整理)MySql
- MySQL-18.主從複製MySql
- Windows Mysql主從複製部署WindowsMySql
- Mysql 傳統主從複製MySql
- MySQL8.0主從複製MySql
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- MySQL 主從複製之多執行緒複製MySql執行緒
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- MYSQL主從複製製作配置方案MySql
- Mysql實現主從複製(一主雙從)MySql
- mysql資料庫的主從複製和主主複製實踐MySql資料庫
- 聊聊MySQL主從複製的幾種複製方式MySql
- MySQL5.7主從複製-半同步複製搭建MySql
- MySQL-主從複製簡介MySql
- 簡單搭建MySQL主從複製MySql
- Mysql主從複製原理及搭建MySql
- MySQL 的主從複製實踐MySql
- MySQL 主從複製錯誤1837MySql