您好,登錄后才能下訂單哦!
今天小編給大家分享一下Mysql主從三種復制模式是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
MySQL異步復制是主從復制過程中默認的復制模式。主從復制涉及三個線程,master I/O線程、slave I/O線程、slave sql線程。因為是異步復制,所以master事務的提交,不需要經過slave的確認,即master I/O線程提交事務后,不需要等待slave I/O線程的回復確認,master并不保證binlog一定寫入到了relay log中;而slave I/O把binlog寫入relay log后,由slave sql線程異步執行應用到slave mysql中,slave I/O也不需要slave sql的回復確認,并不保證relay log日志完整寫入到了mysql中。
基于傳統異步存在的缺陷,mysql在5.5版本推出半同步復制,是對傳統異步復制的改進。在master事務commit前,必須確保binlog日志已經寫入slave 的relay log日志中,收到slave給master的響應后,才能進行事務的commit。但是后半部分的relay log到sql線程仍然屬于異步執行。
基于傳統異步復制和半同步復制的缺陷——數據的一致性問題無法保證,MySQL官方在5.7.17版本正式推出組復制(MySQL Group Replication,簡稱MGR)。
由若干個節點共同組成一個復制組,一個事務的提交,必須經過組內大多數節點(N / 2 + 1)決議并通過,才能得以提交。如上圖所示,由3個節點組成一個復制組,Consensus層為一致性協議層,在事務提交過程中,發生組間通訊,由2個節點決議(certify)通過這個事務,事務才能夠最終得以提交并響應。
引入組復制,主要是為了解決傳統異步復制和半同步復制可能產生數據不一致的問題。組復制依靠分布式一致性協議(Paxos協議的變體),實現了分布式下數據的最終一致性,提供了真正的數據高可用方案(是否真正高可用還有待商榷)。其提供的多寫方案,給我們實現多活方案帶來了希望。
MGR環境下,服務器數量必須是3臺以上,并且是單數,實現2/n+1的算法。
一個復制組由若干個節點(數據庫實例)組成,組內各個節點維護各自的數據副本(Share Nothing),通過一致性協議實現原子消息和全局有序消息,來實現組內實例數據的一致。
數據一致性保障:確保集群中大部分節點收到日志
多節點寫入支持:多寫模式下支持集群中的所有節點都可以寫入(但是考慮1到高并發場景下,保證數據高度一致性,生產并沒有選擇多主寫入,使用單主集群)
Fault Tolerance: 確保系統發生故障(包括腦裂)依然可用,雙寫對系統無影響
僅支持InnoDB表,并且每張表一定要有一個主鍵,用于做write set的沖突檢測;
必須打開GTID特性,二進制日志格式必須設置為ROW,用于選主與write set
COMMIT可能會導致失敗,類似于快照事務隔離級別的失敗場景
目前一個MGR集群最多支持9個節點
不支持外鍵于save point特性,無法做全局間的約束檢測與部分部分回滾
二進制日志不支持binlog event checksum
以上就是“Mysql主從三種復制模式是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。