亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

簡單談談MySQL的半同步復制

2024-07-24 13:12:27
字體:
來源:轉載
供稿:網友

簡介

MySQL通過復制(Replication)實現存儲系統的高可用。目前,MySQL支持的復制方式有:

  1. 異步復制(Asynchronous Replication):原理最簡單,性能最好。但是主備之間數據不一致的概率很大。
  2. 半同步復制(Semi-synchronous Replication):相比異步復制,半同步復制犧牲了一定的性能,提升了主備之間數據的一致性(有一些情況還是會出現主備數據不一致)。
  3. 組復制(Group Replication):基于Paxos算法實現分布式數據復制的強一致性。只要大多數機器存活就能保證系統可用。相比半同步復制,Group Replication的數據一致性和系統可用性更高。

本文主要討論MySQL半同步復制。

半同步復制的基本流程

MySQL半同步復制的實現是建立在MySQL異步復制的基礎上的。MySQL支持兩種略有不同的半同步復制:AFTER_SYNC和AFTER_COMMIT(受rpl_semi_sync_master_wait_wait_point控制)。

開啟半同步復制時,Master在返回之前會等待Slave的響應或超時。當Slave超時時,半同步復制退化成異步復制。這也是MySQL半同步復制存在的一個問題。本文不討論Salve超時的情形(不討論異步復制)。

半同步復制AFTER_SYNC模式的基本流程

AFTER_SYNC模式是MySQL 5.7才支持的半同步復制方式,也是MySQL5.7默認的半同步復制方式:

  • Prepare the transaction in the storage engine(s).
  • Write the transaction to the binlog, flush the binlog to disk.
  • Wait for at least one slave to acknowledge the reception for the binlog events for the transaction.
  • Commit the transaction to the storage engine(s).

半同步復制AFTER_COMMIT模式的基本流程

MySQL 5.5和5.6的半同步復制只支持AFTER_COMMIT:

  • Prepare the transaction in the storage engine(s).
  • Write the transaction to the binlog, flush the binlog to disk.
  • Commit the transaction to the storage engine(s).
  • Wait for at least one slave to acknowledge the reception for the binlog events for the transaction.

AFTER_SYNC和AFTER_COMMIT兩種方式的小結

AFTER_SYNC: 日志復制到Slave之后,Master再commit。
所有在master上commit的事務都已經復制到slave。
所有已經復制到slave的事務在master不一定commit了(比如,master將日志復制到slave之后,在commit之前宕機了)

AFTER_COMMIT:Master commit之后再將日志復制到Slave。
所有master上commit的事務不一定復制到slave。(比如,master commit之后,還沒來得及將日志復制到slave就宕機了)
所有已經復制到slave的事務在master上一定commit了。
很明顯,AFTER_COMMIT在master宕機的情況下,無法保證數據的一致性(master commit之后,還沒來得及將日志復制到slave就宕機了)。本文接下來只討論AFTER_SYNC模式。
MySQL5.7.3開始支持配置半同步復制等待Slave應答的個數:rpl_semi_sync_master_wait_slave_count 。

AFTER_SYNC模式下的異常情況分析

異常情況1:master宕機后,主備切換。

master執行事務T,在將事務T的binlog刷到硬盤之前,master發生宕機。slave升級為master。master重啟后,crash recovery會對事務T進行回滾。主備數據一致。

master執行事務T,在將事務T的binlog刷到硬盤之后,收到slave的ACK之前,master發生宕機(存在pendinglog)。slave升級為master。

2.1 slave還沒有收到事務T的binlog,master重啟后,crash recovery會直接提交pendinglog。主備數據不一致。

2.2 slave已經收到事務T的binlog。主備數據一致。

異常情況2:master宕機后,不切換主機。只需考慮異常情況1中的2.1。

master重啟后,直接提交pendinglog,此時,主備數據不一致:

slave連接上master,通過異步復制的方式獲得事務T的binlog。主備數據一致。
slave還沒來得及復制事務T的binlog,如果master又發生宕機,磁盤損壞。主備數據不一致,事務T的數據丟失。
異常情況處理

從上面異常情況的簡單分析我們得知,半同步復制需要處理master宕機后重啟存在pendinglog(slave沒有應答的binlog)的特殊情況。

針對master宕機后,不進行主備切換的情形:

在crash recovery之后,master等到slave的連接和復制,直到至少有一個slave復制了所有已提交的事務的binlog。(SHOW MASTER STATUS on master and SELECT master_pos_wait()  on slave)。

針對master宕機后,進行主備切換的情形:

舊master重啟后,在crash recovery時,對pendinglog進行回滾。(人工截斷master的binlog未復制的部分?)

思考

為什么master重啟之后,crash recovery的過程中,是直接commit pendinglog,而不是重試請求slave的應答呢?

MySQL的異步復制和半同步復制都是由slave觸發的,slave主動去連接master同步binlog。

沒有發生主備切換,機器重啟后無法知道哪臺機器是slave。
如果發生主備切換,它已經不是master了,則不會再有slave連上來。如果繼續等待,則無法正常運行。

總結

MySQL半同步復制存在以下問題:

  1. 當Slave超時時,會退化成異步復制。
  2. 當Master宕機時,數據一致性無法保證,需要人工處理。
  3. 復制是串行的。

正因為MySQL在主備數據一致性存在著這些問題,影響了互聯網業務7*24的高可用服務,因此各大公司紛紛祭出自己的“補丁”:騰訊的TDSQL、微信的PhxSQL、阿里的AliSQL、網易的InnoSQL。

MySQL官方已經在MySQL5.7推出新的復制模式——MySQL Group Replication。

參考文獻

MySQL半同步復制的數據一致性探討

MySQL High Availability Solutions

Loss-less Semi-Synchronous Replication on MySQL 5.7.2

Enhanced semisync replication


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人黄色生活片| 欧美激情乱人伦一区| 久久久久久国产精品美女| 日韩在线视频观看正片免费网站| 中文字幕免费精品一区高清| 亚洲一区亚洲二区| 九九精品在线视频| 国产女同一区二区| 中文字幕欧美日韩| 日韩成人免费视频| 国产成人精品免高潮在线观看| 日韩有码在线电影| 亚洲精品永久免费| 亚洲人午夜精品免费| 国产精品色悠悠| 伊人激情综合网| 欧美肥老妇视频| 日韩一区二区av| 色偷偷偷亚洲综合网另类| 欧美中文字幕视频在线观看| 亚洲日本成人网| 亚洲一区二区在线播放| 91香蕉嫩草神马影院在线观看| 国产日韩在线观看av| 国产中文欧美精品| 欧美一区在线直播| 久久久国产精彩视频美女艺术照福利| 91精品久久久久久久久久| 亚洲人成电影网站色www| 羞羞色国产精品| 日本一欧美一欧美一亚洲视频| 国产亚洲精品久久久优势| 成人精品一区二区三区电影黑人| 国产69精品久久久久9999| 欧美亚洲国产日本| 成人精品视频久久久久| 日韩人在线观看| 国内精品小视频| 亚洲综合精品伊人久久| 米奇精品一区二区三区在线观看| 欧美激情一区二区三区高清视频| 日韩人体视频一二区| 国产视频在线观看一区二区| 91久久在线播放| 欧美日韩美女在线观看| 福利视频一区二区| 久久影院免费观看| 伊人伊人伊人久久| 欧美精品做受xxx性少妇| 亚洲成人av中文字幕| 久久久久久伊人| 尤物精品国产第一福利三区| 国内免费精品永久在线视频| 日韩a**中文字幕| 亚洲变态欧美另类捆绑| 97免费视频在线| 日韩av免费在线| 日韩a**中文字幕| 亚洲欧美日韩精品久久奇米色影视| 日本精品中文字幕| 欧美在线视频免费播放| 97超碰色婷婷| 欧美一区二粉嫩精品国产一线天| 国产综合视频在线观看| 亚洲色图欧美制服丝袜另类第一页| 亚洲欧美另类在线观看| 欧美日韩激情网| 日韩精品视频中文在线观看| www.日韩.com| 欧美激情在线观看视频| 国产美女久久久| 欧美激情一区二区三区高清视频| 欧美日本国产在线| 国产精品久久视频| 欧美日韩久久久久| 色综合久久精品亚洲国产| 一区二区三区黄色| 国产国语videosex另类| 欧美性生交xxxxxdddd| 欧美激情一区二区三区高清视频| 亚洲精品成a人在线观看| 日本精品视频在线观看| 亚洲欧洲高清在线| 精品日本高清在线播放| 91精品国产91久久久久久吃药| 欧美日韩中文在线观看| 午夜精品久久久久久久99热浪潮| 尤物九九久久国产精品的分类| 欧美午夜精品久久久久久久| 亚洲精品动漫久久久久| 国产精品久久久久久一区二区| 日日骚av一区| 欧美成年人网站| 国产精品久久久久久亚洲影视| 成人av在线网址| 国产精品久久久久久久久久久不卡| 日韩美女av在线免费观看| 欧美日韩国产在线看| 午夜精品久久久久久99热软件| 亚洲女人初尝黑人巨大| 亚洲黄色av网站| 欧美成人精品不卡视频在线观看| 久久影视电视剧免费网站清宫辞电视| 国产欧美婷婷中文| 国产精品热视频| 91精品国产高清久久久久久| 亚洲国产精品嫩草影院久久| 亚洲激情中文字幕| 日韩电影免费观看中文字幕| 欧美成人激情在线| 欧美裸体男粗大视频在线观看| 日韩免费观看在线观看| 亚洲美女喷白浆| 中文字幕精品久久久久| 久久免费视频观看| 亚洲色图狂野欧美| 国产精品视频永久免费播放| 亚洲国产私拍精品国模在线观看| 一本色道久久综合亚洲精品小说| 一区二区亚洲精品国产| 亚洲xxxx妇黄裸体| 草民午夜欧美限制a级福利片| 日韩精品视频在线观看网址| 成人国产精品一区| 亚洲国产精品推荐| 久久伊人精品一区二区三区| 国产成人精品a视频一区www| 57pao国产成人免费| 亚洲色图综合网| 懂色av影视一区二区三区| 亚洲欧美日韩国产中文| 色婷婷久久一区二区| 亚洲欧美福利视频| 久久久www成人免费精品张筱雨| 亚洲美女精品久久| 亚洲精品美女久久久| 中文字幕欧美精品日韩中文字幕| 久久精品国产亚洲| 日本国产一区二区三区| 国产成人91久久精品| 国产精品老牛影院在线观看| 久久久视频免费观看| 91老司机精品视频| 亚洲字幕一区二区| 日韩高清电影免费观看完整版| 久久这里只有精品视频首页| 日本精品视频网站| 亚洲福利视频在线| 日韩电影视频免费| 91高清视频在线免费观看| 久久精品99久久久香蕉| 久久电影一区二区| 久久久久99精品久久久久| 色诱女教师一区二区三区| 日韩免费av在线| 一区国产精品视频| 亚洲国语精品自产拍在线观看| 7777kkkk成人观看| xvideos成人免费中文版| 色噜噜国产精品视频一区二区| 国产精品久久久久久久久久尿| 久久伊人精品天天| 国产精品视频成人| 欧美国产视频日韩|