成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文看懂MySQL的異步復制、全同步復制與半同步復制

運維 數據庫運維
今天主要聊一下MySQL的異步復制、全同步復制與半同步復制,目前我們生產庫實際上用的就是異步復制了,后面再轉成半同步復制。

今天主要聊一下MySQL的異步復制、全同步復制與半同步復制,目前我們生產庫實際上用的就是異步復制了,后面再轉成半同步復制。

一、MYSQL復制架構衍生史

在2000年,MySQL 3.23.15版本引入了Replication。Replication作為一種準實時同步方式,得到廣泛應用。這個時候的Replicaton的實現涉及到兩個線程,一個在Master,一個在Slave。Slave的I/O和SQL功能是作為一個線程,從Master獲取到event后直接apply,沒有relay log。這種方式使得讀取event的速度會被Slave replay速度拖慢,當主備存在較大延遲時候,會導致大量binary log沒有備份到Slave端。

在2002年,MySQL 4.0.2版本將Slave端event讀取和執行獨立成兩個線程(IO線程和SQL線程),同時引入了relay log。IO線程讀取event后寫入relay log,SQL線程從relay log中讀取event然后執行。這樣即使SQL線程執行慢,Master的binary log也會盡可能的同步到Slave。當Master宕機,切換到Slave,不會出現大量數據丟失。

在2010年MySQL 5.5版本之前,一直采用的是這種異步復制的方式。主庫的事務執行不會管備庫的同步進度,如果備庫落后,主庫不幸crash,那么就會導致數據丟失。于是在MySQL在5.5中就順其自然地引入了半同步復制,主庫在應答客戶端提交的事務前需要保證至少一個從庫接收并寫到relay log中。

在2016年,MySQL在5.7.17中引入了一個全新的技術,稱之為InnoDB Group Replication。目前官方MySQL 5.7.17基于Group replication的全同步技術已經問世,全同步技術帶來了更多的數據一致性保障。

下圖對應MySQL幾種復制類型,分別是異步、半同步、全同步

一文看懂MySQL的異步復制、全同步復制與半同步復制

二、異步復制(Asynchronous replication)

1. 邏輯上

MySQL默認的復制即是異步的,主庫在執行完客戶端提交的事務后會立即將結果返給給客戶端,并不關心從庫是否已經接收并處理,這樣就會有一個問題,主如果crash掉了,此時主上已經提交的事務可能并沒有傳到從庫上,如果此時,強行將從提升為主,可能導致新主上的數據不完整。

2. 技術上

主庫將事務 Binlog 事件寫入到 Binlog 文件中,此時主庫只會通知一下 Dump 線程發送這些新的 Binlog,然后主庫就會繼續處理提交操作,而此時不會保證這些 Binlog 傳到任何一個從庫節點上。

3. 原理圖

一文看懂MySQL的異步復制、全同步復制與半同步復制

(1) 在Slave 服務器上執行sart slave命令開啟主從復制開關,開始進行主從復制。

(2) 此時,Slave服務器的IO線程會通過在master上已經授權的復制用戶權限請求連接master服務器,并請求從執行binlog日志文件的指定位置(日志文件名和位置就是在配置主從復制服務時執行change master命令指定的)之后開始發送binlog日志內容

(3) Master服務器接收到來自Slave服務器的IO線程的請求后,其上負責復制的IO線程會根據Slave服務器的IO線程請求的信息分批讀取指定binlog日志文件指定位置之后的binlog日志信息,然后返回給Slave端的IO線程。返回的信息中除了binlog日志內容外,還有在Master服務器端記錄的IO線程。返回的信息中除了binlog中的下一個指定更新位置。

(4) 當Slave服務器的IO線程獲取到Master服務器上IO線程發送的日志內容、日志文件及位置點后,會將binlog日志內容依次寫到Slave端自身的Relay Log(即中繼日志)文件(Mysql-relay-bin.xxx)的最末端,并將新的binlog文件名和位置記錄到master-info文件中,以便下一次讀取master端新binlog日志時能告訴Master服務器從新binlog日志的指定文件及位置開始讀取新的binlog日志內容

(5) Slave服務器端的SQL線程會實時檢測本地Relay Log 中IO線程新增的日志內容,然后及時把Relay LOG 文件中的內容解析成sql語句,并在自身Slave服務器上按解析SQL語句的位置順序執行應用這樣sql語句,并在relay-log.info中記錄當前應用中繼日志的文件名和位置點

三、全同步復制(Fully synchronous replication)

1. 邏輯上

指當主庫執行完一個事務,所有的從庫都執行了該事務才返回給客戶端。因為需要等待所有從庫執行完該事務才能返回,所以全同步復制的性能必然會收到嚴重的影響。

2. 技術上

當主庫提交事務之后,所有的從庫節點必須收到、APPLY并且提交這些事務,然后主庫線程才能繼續做后續操作。但缺點是,主庫完成一個事務的時間會被拉長,性能降低。

3. 原理圖

一文看懂MySQL的異步復制、全同步復制與半同步復制

四、半同步復制(Semisynchronous replication)

1. 邏輯上

是介于全同步復制與全異步復制之間的一種,主庫只需要等待至少一個從庫節點收到并且 Flush Binlog 到 Relay Log 文件即可,主庫不需要等待所有從庫給主庫反饋。同時,這里只是一個收到的反饋,而不是已經完全完成并且提交的反饋,如此,節省了很多時間。

2. 技術上

介于異步復制和全同步復制之間,主庫在執行完客戶端提交的事務后不是立刻返回給客戶端,而是等待至少一個從庫接收到并寫到relay log中才返回給客戶端。相對于異步復制,半同步復制提高了數據的安全性,同時它也造成了一定程度的延遲,這個延遲最少是一個TCP/IP往返的時間。所以,半同步復制最好在低延時的網絡中使用。

3. 原理圖

master將每個事務寫入binlog(sync_binlog=1),傳遞到slave刷新到磁盤(sync_relay=1),同時主庫提交事務(commit)。master等待slave反饋收到relay log,只有收到ACK后master才將commit OK結果反饋給客戶端。

一文看懂MySQL的異步復制、全同步復制與半同步復制

總之,mysql主從模式默認是異步復制的,而MySQL Cluster是同步復制的,只要設置為相應的模式即是在使用相應的同步策略。

從MySQL5.5開始,MySQL以插件的形式支持半同步復制。其實說明半同步復制是更好的方式,兼顧了同步和性能的問題。

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2017-06-23 11:17:24

MySQL搭建配置

2009-12-17 08:54:31

MySQL 5.5半同步復制

2023-02-27 07:33:14

MySQL數據庫服務器

2010-04-28 11:19:04

Oracle高級復制

2010-04-28 08:55:40

Oracle高級復制

2010-10-20 14:27:09

SQL Server同

2017-06-29 09:28:37

OracleMariaDB復制

2010-11-08 11:22:21

SQL Server同

2019-10-17 09:05:21

MySQL數據庫高可用

2024-12-17 17:20:00

Python列表

2024-07-19 09:10:37

2024-07-15 09:14:03

MySQL主從復制

2011-04-02 16:20:21

SQL SERVER 同步復制

2017-12-27 13:07:52

數據庫MySQL主從復制

2017-09-19 18:34:16

Mysql數據庫性能測試

2021-12-06 09:43:01

鏈表節點函數

2024-11-28 09:23:09

2010-05-12 17:03:30

Oracle復制技術

2010-07-06 13:13:52

SQL Server

2023-08-29 07:22:06

MySQL數據工具故障恢復
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操 夜夜操 | 亚洲在线免费 | 久久久精品影院 | 99精品久久99久久久久 | 亚洲欧美在线观看 | 日韩一区二区三区视频 | 在线一区二区三区 | 精品91久久 | 久久中文网 | 日韩av免费在线电影 | 欧美日一区二区 | 国产成人在线播放 | 日韩久久精品视频 | 久久爱综合 | 九九热在线免费观看 | 亚洲精品一区在线 | 高清人人天天夜夜曰狠狠狠狠 | 成年人黄色免费视频 | 最新中文字幕在线 | 91精品麻豆日日躁夜夜躁 | 福利一区视频 | 国产精品久久久久久久久久久久冷 | 欧美日韩亚洲国产 | 久久免费精品视频 | 国产乱码高清区二区三区在线 | 亚洲三级在线 | 欧美视频1区 | 欧美理论片在线观看 | 真人一级毛片 | 欧美久久不卡 | 国产jizz女人多喷水99 | 免费成人av| 午夜激情影院 | 黄色大片免费播放 | 福利精品 | 国产韩国精品一区二区三区 | 91久久久久久久久久久 | 国产精品国产精品 | www.日本国产| 精品欧美一区二区三区久久久 | 欧美v片 |