欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL之高可用架構詳解

 更新時間:2021年12月17日 10:03:50   作者:Java雨孟  
大家好,本篇文章主要講的是MySQL之高可用架構詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

引言

“高可用”是互聯(lián)網(wǎng)一個永恒的話題,先避開MySQL不談,為了保證各種服務的高可用有幾種常用的解決方案。

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

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

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

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

MySQL高可用

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

一主一備:

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

老生常談:MySQL高可用架構

上圖是主從數(shù)據(jù)同步的一個示意圖。

Master節(jié)點有Dump進程把binlog中的數(shù)據(jù)發(fā)送到Slave節(jié)點,

Slave節(jié)點有IO進程接收數(shù)據(jù)寫入relay log,

Slave節(jié)點的SQL進程根據(jù)relay log寫入數(shù)據(jù)。

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

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

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

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

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

MySQL主從同步的幾種模式:

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

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

Master節(jié)點寫數(shù)據(jù)到Binlog,并且執(zhí)行Sync操作。Master發(fā)送數(shù)據(jù)給Slave節(jié)點,同時commit主庫的事務。收到ACK后Master節(jié)點把數(shù)據(jù)返回給客戶端。

這種數(shù)據(jù)提交模式叫:?after_commit

老生常談:MySQL高可用架構

after_commit?模式存在問題: 主庫等待ACK時,事務已經(jīng)commit,主庫的其他事務可以讀到commit的數(shù)據(jù),這個時候如果Master崩潰,slave數(shù)據(jù)丟失,發(fā)生主從切換,會導致出現(xiàn)幻讀。 為了解決這個問題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線程并發(fā)執(zhí)行relay log中主庫提交的事務,極大地提高了主從復制的效率。 MySQL5.7半同步功能可以通過
rpl_semi_sync_master_wait_slave_count?參數(shù)配置slave節(jié)點ACK的個數(shù),認為主從同步完成。

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

老生常談:MySQL高可用架構

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

老生常談:MySQL高可用架構

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

老生常談:MySQL高可用架構

總結

MySQL的高可用架構沒有銀彈,了解其原理,選擇符合自己業(yè)務場景的部署架構就可以了。

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

相關文章

  • Mysql二進制安裝與備份的全過程記錄

    Mysql二進制安裝與備份的全過程記錄

    這篇文章主要給大家介紹了關于Mysql二進制安裝與備份的相關資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友可以參考下
    2022-01-01
  • 使用sysbench來測試MySQL性能的詳細教程

    使用sysbench來測試MySQL性能的詳細教程

    這篇文章主要介紹了使用sysbench來測試MySQL性能的詳細教程,包括介紹了從sysbench的編譯安裝到初始化測試庫環(huán)境等一系列操作,需要的朋友可以參考下
    2015-05-05
  • 打開和關閉mysql服務的兩種實現(xiàn)方法

    打開和關閉mysql服務的兩種實現(xiàn)方法

    這篇文章主要介紹了打開和關閉mysql服務的兩種實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • MySQL+Navicat安裝配置保姆級教程

    MySQL+Navicat安裝配置保姆級教程

    這篇文章主要介紹了MySQL+Navicat安裝配置教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • mysql 批量查詢取每一組最新一條數(shù)據(jù)

    mysql 批量查詢取每一組最新一條數(shù)據(jù)

    根據(jù)車牌號查詢最新的一條交車記錄的‘合同號’ ,這里只需要查詢‘合同號’這個字段,這篇文章主要介紹了mysql 批量查詢取每一組最新一條數(shù)據(jù),需要的朋友可以參考下
    2024-02-02
  • 修改MySQL8.0 默認的數(shù)據(jù)目錄(快捷操作無配置)

    修改MySQL8.0 默認的數(shù)據(jù)目錄(快捷操作無配置)

    這篇文章主要介紹了修改MySQL8.0 默認的數(shù)據(jù)目錄(快捷操作無配置),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • mysql查詢的控制語句圖文詳解

    mysql查詢的控制語句圖文詳解

    這篇文章主要給大家介紹了關于mysql查詢控制語句的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • MySQL中EXPLAIN命令詳解

    MySQL中EXPLAIN命令詳解

    在這里我們將介紹的是MySQL中EXPLAIN解釋命令,希望對大家有所幫助
    2014-08-08
  • MySQL 語句注釋方式簡介

    MySQL 語句注釋方式簡介

    這篇文章主要介紹了MySQL 語句注釋方式簡介,方法非常簡單,需要的朋友可以了解下。
    2017-10-10
  • MySQL查詢語句過程和EXPLAIN語句基本概念及其優(yōu)化

    MySQL查詢語句過程和EXPLAIN語句基本概念及其優(yōu)化

    在MySQL中我們經(jīng)常會使用到一些查詢語句,如果使用合適的索引會大大簡化和加速查找,下面小編來和大家一起學習一下知識
    2019-05-05

最新評論