一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL之高可用架構詳解

MySQL之高可用架構詳解

2022-01-25 17:30Java雨孟 Mysql

大家好,本篇文章主要講的是MySQL之高可用架構詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

引言

高可用”是互聯網一個永恒的話題,先避開mysql不談,為了保證各種服務的高可用有幾種常用的解決方案。

服務冗余:把服務部署多份,當某個節點不可用時,切換到其他節點。服務冗余對于無狀態的服務是相對容易的。

服務備份:有些服務是無法同時存在多個運行時的,比如說:nginx的反向代理,一些集群的leader節點。這時可以存在一個備份服務,處于隨時待命狀態。

自動切換:服務冗余之后,當某個節點不可用時,要做到快速切換。

總結起來就是 冗余+故障轉移 。

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的高可用架構沒有銀彈,了解其原理,選擇符合自己業務場景的部署架構就可以了。

到此這篇關于mysql之高可用架構詳解的文章就介紹到這了,更多相關mysql高可用架構內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/m0_64374605/article/details/121962711

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 饭冈加奈子黑人解禁在线播放 | 五月天国产视频 | 恩不要好大好硬好爽3p | 久久免费看少妇高潮A片特爽 | 国产caonila在线观看 | 成年人网站免费在线观看 | 男男同志gaysxxx | 无人区尖叫之夜美女姐姐视频 | 日本高清在线看 | 男人与雌性宠物交啪啪小说 | 4455永久在线观免费看片 | 国产三级精品播放 | 欧美视频黑鬼大战白妞 | 亚洲精品国产精品麻豆99 | 亚洲成人影院在线观看 | 天天做天天爰夜夜爽 | 男人操美女视频 | 美女下面被cao出水 美女污视频 | 日本亚洲免费 | 亚洲一区二区福利视频 | 免费看全黄特黄毛片 | 俄罗斯美女毛茸茸bbwbbw | 特黄a大片免费视频 | 免费在线观看中文字幕 | 日韩二三区| 精品一区二区三区中文 | 亚洲欧美日韩成人 | 国产精品久久久精品视频 | 俄罗斯性高清完整版 | 91精品国产美女福到在线不卡 | 日本花季传媒2020旧版安卓 | 亚洲高清国产拍精品动图 | 国产福利一区二区三区 | 高h视频免费观看 | 波多野结衣中文字幕乱七八糟 | 图片亚洲va欧美va国产综合 | 性满足久久久久久久久 | 9420高清完整版在线观看国语 | 欧美综合亚洲图片综合区 | 三年片韩国在线 | 嫩草在线观看视频 |