#MySQL# mysql5.7新特性之半同步複製
一 : 增強半同步複製
① 半同步複製(5.5 5.6)
過程分析:
1 > session 發出commit請求
2 > flush binlog and fsync binlog
3 > InnoDB 引擎層 commit
4 > 傳送binlog到SLAVE,等待slave傳送ack確認
5 > slave 接受binlog 寫入relay log ,刷盤完成傳送ack確認包給master
6 > master 返回 commit ok 資訊給session
另外 (master 等待事務A 的 ACK的時候當機,此時新事務B在當機之前開啟):
1> binlog 未傳送到從庫:
事務B獲取到事務A提交的內容, 此時當機故障切換到slave,事務B獲取到的內容卻丟失了。事務A commit沒有收到反饋資訊(則需要業務判斷了)。
2> binlog 已經傳送給從庫 :
事務B獲取到事務A提交的內容,故障切換到salve ,B仍然獲取到A提交的內容,沒毛病。事務A commit沒有收到反饋資訊,若重新執行該事務,則相當於執行兩次A事務(則需要業務判斷了)。
② 增強半同步複製(5.7)
由該引數 rpl_semi_sync_master_wait_point=AFTER_SYNC/AFTER_COMMIT 兩個值選擇是否啟用增強半同步
當 半同步模式為 AFTER_COMMIT 時,為以上分析的情況
當 半同步模式為 AFTER_SYNC 模式時,則:
過程分析:
1 > session 發出commit請求
2 > flush binlog and fsync binlog
3 > 傳送binlog到SLAVE,等待slave傳送ack確認
4 > slave 接受binlog 寫入relay log ,刷盤完成傳送ack確認包給master
5 > InnoDB 引擎層 commit
6 > master 返回 commit ok 資訊給session
另外(master 等待事務A 的 ACK的時候當機,此時新事務B在當機之前開啟):
1> 事務B讀取不到事務A的內容,因為事務A的ENGINE層還沒有提交(無損複製)
二 : 半同步複製增加 ACK執行緒
① mysql5.5 mysql5.6
1> master dump thread 傳送binlog events 給 slave 的IO thread,等待 slave 的ack回包
2> slave 接受binlog events 寫入redo log ,返回 ack 包給master dump thread
3> master dump thread 收到ack包 ,給session返回commit ok,然後繼續傳送寫一個事務的binlog。
② mysql5.7 新增ack執行緒
1> master dump thread 傳送binlog events 給 slave 的IO thread,開啟ack執行緒等待 slave 的ack回包,dump 執行緒繼續向slaveIO thread傳送下一個事務的binlog。
2> slave 接受binlog events 寫入redo log ,返回 ack 包給master ack執行緒,然後給session返回commit ok。
可以看到,mysql5.7半同步複製中增加了一個 ACK執行緒專門用來進行semi 複製的ACK確認,這提高了複製的tps。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-2153514/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql5.7半同步複製MySql
- MySQL5.7主從複製-半同步複製搭建MySql
- MySQL5.7半同步複製報錯案例分析MySql
- MySQL主從複製之半同步複製MySql
- Mariadb之半同步複製叢集配置
- MySQL 8 複製(二)——半同步複製MySql
- mysql 5.7半同步複製MySql
- mysql半同步複製的設定MySql
- MySQL#複製 - 原生複製的一致性探討MySql
- 半同步複製報錯mysql8.0.25MySql
- MySQL主從複製之非同步複製MySql非同步
- MySQL增強(Loss-less)半同步複製MySql
- mysql5.7主從複製,主主複製MySql
- MySQL5.7新特性之備份工具mysqlpump的使用MySql
- MySQL5.7主從複製教程MySql
- [Mysql]Mysql5.7並行複製MySql並行
- 多從庫時半同步複製不工作的BUG分析
- MySQL 8 複製(一)——非同步複製MySql非同步
- 【ESSD技術解讀】阿里雲塊儲存企業級特性之非同步複製阿里非同步
- Mysql半同步複製模式說明及配置示例 - 運維小結MySql模式運維
- MySQL半同步複製資料最終一致性驗證MySql
- mysql5.7 GTID 主從複製模式-增加新的slave1(好文章!!)MySql模式
- MySQL-主從複製之同步主從資料MySql
- GreatSQL 非同步複製及搭建SQL非同步
- MongoDB 重新同步複製整合員MongoDB
- 主從複製--非同步篇非同步
- MySQL主從複製之GTID複製MySql
- MySQL案例07:MySQL5.7併發複製隱式bugMySql
- PostgreSQL 13 同步流複製(#2.4)-202104SQL
- MongoDB複製集資料同步流程MongoDB
- Go1.18 新特性:高效複製,strings, bytes 標準庫新增 Clone APIGoAPI
- MySQL5.7 group by新特性報錯1055的解決辦法MySql
- MySQL5.7在滴滴雲主機上的主從複製MySql
- python複製之坑Python
- SQL Server 2008資料複製新特性及其帶來的價值(下)XDSQLServer
- PostgreSQL 13 非同步流複製(#2.1)-202103SQL非同步
- PostgreSQL 13 同步流複製+failover(#2.6)-202104SQLAI
- DM7資料複製之模式級複製模式