中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL之高可用架構的示例分析

發布時間:2021-12-17 12:26:28 來源:億速云 閱讀:164 作者:小新 欄目:開發技術

小編給大家分享一下MySQL之高可用架構的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

MySQL高可用

MySQL的高可用也是同樣的思路,首先要有多個MySQL實例提供服務,其次就是當某個實例掛掉時,可以自動切換流量。同時MySQL作為存儲,節點之間數據同步也是一個難題(換句話說,有狀態的服務都面臨這個問題)。

一主一備:

MySQL的各種高可用架構,都脫離不了MySQL實例之間的數據同步,因此,我們先介紹下最簡單的一主一備架構下MySQL的數據同步流程。

MySQL之高可用架構的示例分析

上圖是主從數據同步的一個示意圖。

Master節點有Dump進程把binlog中的數據發送到Slave節點,

Slave節點有IO進程接收數據寫入relay log,

Slave節點的SQL進程根據relay log寫入數據。

這里還要延伸一點,binlog存在三種形式:Statement、Row、Mixed。

Statement:就是把每一條SQL記錄到binlog中。

Row:是把每一行修改的具體數據記錄到binlog中。

Mixed:MySQL會靈活的區分,需要記錄sql還是具體修改的記錄。

只記錄SQL的話binlog會比較小,但是有些SQL語句在主從同步數據的時候,可能會因為選擇不同的索引在數據同步過程中出現數據不一致。記錄Row的話就可以保證主從同步不會存在SQL語意偏差的問題,同時Row類型的日志在做數據恢復的時候也比較容易,但是Row會導致binlog過大。

MySQL主從同步的幾種模式:

異步模式:
在這種同步策略下,主庫按照自己的流程處理完數據,會直接返回結果,不會等待主庫和從庫之間的數據同步。 優點:效率高。 缺點:Master節點掛掉之后,Slave節點會丟失數據。全同步模式: 主庫會等待所有從庫都執行完sql語句并ACK完成,才返回成功。 優點:有很好的數據一致性保障。 缺點:會造成數據操作延遲,降低了MySQL的吞吐量。半同步模式:主庫會等待至少有一個從庫把數據寫入relay log并ACK完成,才成功返回結果。 半同步模式介于異步和全同步之間。

半同步的復制方案是在MySQL5.5開始引入的,普通的半同步復制方案步驟如下圖:

Master節點寫數據到Binlog,并且執行Sync操作。Master發送數據給Slave節點,同時commit主庫的事務。收到ACK后Master節點把數據返回給客戶端。

這種數據提交模式叫: after_commit

MySQL之高可用架構的示例分析

after_commit 模式存在問題: 主庫等待ACK時,事務已經commit,主庫的其他事務可以讀到commit的數據,這個時候如果Master崩潰,slave數據丟失,發生主從切換,會導致出現幻讀。 為了解決這個問題MySQL5.7提出了新的半同步復制模式: after_sync

MySQL之高可用架構的示例分析

把主庫的事務提交放到了ACK之后,避免了上述問題。 MySQL5.7還引入了 enhanced multi-threaded slave (簡稱MTS)模式, 當slave配置 slave_parallel_workers >0并且
global.slave_parallel_type =‘LOGICAL_CLOCK',可支持一個schema下,slave_parallel_workers個worker線程并發執行relay log中主庫提交的事務,極大地提高了主從復制的效率。 MySQL5.7半同步功能可以通過
rpl_semi_sync_master_wait_slave_count 參數配置slave節點ACK的個數,認為主從同步完成。

基于MySQL主從同步數據越來越完善,效率越來越高,也就引出了第一種MySQL的高可用架構: 基于MySQL自身的主從同步方案,常用的一種部署架構是: 用戶通過VIP訪問Master和Slave節點,每個節點采用keepalved探索。配置主從關系,進行數據同步。

MySQL之高可用架構的示例分析

基于MHA的高可用架構: 部署一份MHA的Manager節點,在MySQL各個實例部署MHA Node節點。MHA可以實現秒級的故障自動轉移。 當然MySQL節點之間的數據同步還要依賴MySQL自身的數據同步方式。

MySQL之高可用架構的示例分析

MGR(MySQL Group Replication)模式: 感覺MySQL官方更看好MGR集群方案,但是目前我還不知道國內有哪一家公司在使用。 MGR集群是由所有的MySQL Server共同組成的,每個Server都有完整的副本數據,副本之間基于Row格式的日志和GTID來做副本之前的數據同步,采用Paxos算法實現數據的一致性保障。 MGR架構要比前面講述的半同步和異步同步數據的方式要復雜,具體可以參照 官網

MySQL之高可用架構的示例分析

看完了這篇文章,相信你對“MySQL之高可用架構的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南宁市| 万宁市| 齐齐哈尔市| 昌都县| 慈溪市| 宁晋县| 合水县| 五莲县| 赞皇县| 钟山县| 库尔勒市| 班玛县| 夏津县| 沁水县| 兴仁县| 东山县| 成都市| 灵石县| 元氏县| 阳朔县| 班戈县| 临城县| 阿荣旗| 磐安县| 翁源县| 灵寿县| 满洲里市| 南陵县| 龙游县| 绥德县| 祁连县| 三门县| 镇巴县| 南江县| 诏安县| 海伦市| 文昌市| 民权县| 许昌县| 建始县| 积石山|