亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

深入淺出講解MySQL的并行復制

2024-07-25 19:08:44
字體:
來源:轉載
供稿:網友

一、并行復制的背景

首先,為什么會有并行復制這個概念呢?

1. DBA都應該知道,MySQL的復制是基于binlog的。  

2. MySQL復制包括兩部分,IO線程 和 SQL線程。  

3. IO線程主要是用于拉取接收Master傳遞過來的binlog,并將其寫入到relay log  

4. SQL線程主要負責解析relay log,并應用到slave中  

5. 不管怎么說,IO和SQL線程都是單線程的,然后master卻是多線程的,所以難免會有延遲,為了解決這個問題,多線程應運而生了。  

6. IO多線程?  

 6.1 IO沒必要多線程,因為IO線程并不是瓶頸啊  

7. SQL多線程?

 7.1 沒錯,目前最新的5.6,5.7,8.0 都是在SQL線程上實現了多線程,來提升slave的并發度   

接下來,我們就來一窺MySQL在并行復制上的努力和成果吧

二、重點

是否能夠并行,關鍵在于多事務之間是否有鎖沖突,這是關鍵。 下面的并行復制原理就是在看如何讓避免鎖沖突

三、MySQL5.6 基于schema的并行復制

slave-parallel-type=DATABASE(不同庫的事務,沒有鎖沖突)

之前說過,并行復制的目的就是要讓slave盡可能的多線程跑起來,當然基于庫級別的多線程也是一種方式(不同庫的事務,沒有鎖沖突)

先說說優點: 實現相對來說簡單,對用戶來說使用起來也簡單
再說說缺點: 由于是基于庫的,那么并行的粒度非常粗,現在很多公司的架構是一庫一實例,針對這樣的架構,5.6的并行復制無能為力。當然還有就是主從事務的先后順序,對于5.6也是個大問題

話不多說,來張圖好了

MySQL,并行復制

四、MySQL5.7 基于group commit的并行復制

slave-parallel-type=LOGICAL_CLOCK : Commit-Parent-Based模式(同一組的事務[last-commit相同],沒有鎖沖突. 同一組,肯定沒有沖突,否則沒辦法成為同一組)
slave-parallel-type=LOGICAL_CLOCK : Lock-Based模式(即便不是同一組的事務,只要事務之間沒有鎖沖突[prepare階段],就可以并發。 不在同一組,只要N個事務prepare階段可以重疊,說明沒有鎖沖突)

group commit,之前的文章有詳細描述,這里不多解釋。MySQL5.7在組提交的時候,還為每一組的事務打上了標記,現在想想就是為了方便進行MTS吧。

我們先看一組binlog

last_committed=0 sequence_number=1last_committed=1 sequence_number=2last_committed=2 sequence_number=3last_committed=3 sequence_number=4last_committed=4 sequence_number=5last_committed=4 sequence_number=6last_committed=4 sequence_number=7last_committed=6 sequence_number=8last_committed=6 sequence_number=9last_committed=9 sequence_number=10

4.1 Commit-Parent-Based模式

MySQL,并行復制

4.2 Lock-Based模式

MySQL,并行復制

五、MySQL8.0 基于write-set的并行復制

基于主鍵的沖突檢測(binlog_transaction_depandency_tracking = COMMIT_ORDERE|WRITESET|WRITESET_SESSION, 修改的row的主鍵或非空唯一鍵沒有沖突,即可并行)
5.7.22 也支持了 write-set 機制

事務依賴關系:binlog_transaction_depandency_tracking = COMMIT_ORDERE|WRITESET|WRITESET_SESSION

COMMIT_ORDERE: 繼續基于組提交方式
WRITESET: 基于寫集合決定事務依賴
WRITESET_SESSION: 基于寫集合,但是同一個session中的事務不會有相同的last_committed

事務檢測算法:transaction_write_set_extraction = OFF| XXHASH64 | MURMUR32

MySQL會有一個變量來存儲已經提交的事務HASH值,所有已經提交的事務所修改的主鍵(或唯一鍵)的值經過hash后都會與那個變量的集合進行對比,來判斷改行是否與其沖突,并以此來確定依賴關系

這里說的變量,可以通過這個設置大?。?binlog_transaction_dependency_history_size

這樣的粒度,就到了 row級別了,此時并行的粒度更加精細,并行的速度會更快,某些情況下,說slave的并行度超越master也不為過(master是單線程的寫,slave也可以并行回放)

六、如何讓slave的并行復制和master的事務執行的順序一致呢

5.7.19 之后,可以通過設置 slave_preserve_commit_order = 1

官方解釋:  

For multithreaded slaves, enabling this variable ensures that transactions are externalized on the slave in the same order as they appear in the slave's relay log.   
Setting this variable has no effect on slaves for which multithreading is not enabled.   
All replication threads (for all replication channels if you are using multiple replication channels) must be stopped before changing this variable.   
--log-bin and --log-slave-updates must be enabled on the slave.   
In addition --slave-parallel-type must be set to LOGICAL_CLOCK.  
Once a multithreaded slave has been started, transactions can begin to execute in parallel.   
With slave_preserve_commit_order enabled, the executing thread waits until all previous transactions are committed before committing.   
While the slave thread is waiting for other workers to commit their transactions it reports its status as Waiting for preceding transaction to commit.

大致實現原理就是:excecution階段可以并行執行,binlog flush的時候,按順序進行。 引擎層提交的時候,根據binlog_order_commit也是排隊順序完成  

換句話說,如果設置了這個參數,master是怎么并行的,slave就怎么辦并行

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91久久国产精品91久久性色| 久久亚洲精品毛片| 国产成人精品免高潮在线观看| 亚洲综合精品一区二区| 97在线观看免费| 国产精品久久精品| 久久成年人免费电影| 久久91精品国产91久久久| 8x海外华人永久免费日韩内陆视频| 精品国产一区av| 97在线视频国产| 日本a级片电影一区二区| 欧美日韩亚洲成人| 日韩在线中文字| 国产精品高潮呻吟视频| 亚洲天堂免费在线| 精品国内自产拍在线观看| 精品露脸国产偷人在视频| 欧美日韩中文字幕| 亚洲欧美在线播放| 久久久亚洲精选| 日韩精品一二三四区| 久久久噜噜噜久噜久久| 亚洲精品国偷自产在线99热| 国产一区二区三区在线观看视频| 亚洲国产欧美一区二区三区同亚洲| 国产精品久久久久久久久免费| 欧美电影在线免费观看网站| 国产精品对白刺激| 欧美国产日本在线| 茄子视频成人在线| 国产欧美一区二区三区四区| 成人在线激情视频| 欧美日韩国产麻豆| 国产亚洲视频中文字幕视频| 91视频8mav| 综合av色偷偷网| 中文字幕日韩在线观看| 色噜噜久久综合伊人一本| 中文字幕成人精品久久不卡| 亚洲国产精品视频在线观看| 亚洲影院色在线观看免费| 性金发美女69hd大尺寸| 国产精品爽爽爽爽爽爽在线观看| 91av网站在线播放| 欧美富婆性猛交| 亚洲精品一区二区在线| 国产91色在线|免| 欧美性猛交xxxx富婆弯腰| 国产精品男女猛烈高潮激情| 97免费视频在线播放| 奇米成人av国产一区二区三区| 成人精品福利视频| 亚洲欧美日韩在线一区| 久久精品99无色码中文字幕| 亚洲欧美激情一区| 亚洲精品国产免费| 美女国内精品自产拍在线播放| 按摩亚洲人久久| 在线视频欧美性高潮| 久久精品国产亚洲一区二区| 亚洲色图15p| 国产精品中文在线| 亚洲高清色综合| 色偷偷88888欧美精品久久久| 亚洲综合日韩中文字幕v在线| 国产欧美在线观看| 欧美日韩国产第一页| 欧美一区二粉嫩精品国产一线天| 欧美激情亚洲另类| 日韩免费在线视频| 国产91精品高潮白浆喷水| 日韩免费视频在线观看| 日韩美女在线播放| 国产精品精品视频| 亚洲欧美中文日韩v在线观看| 7777精品视频| 欧美国产亚洲精品久久久8v| 国产大片精品免费永久看nba| 色综合久久天天综线观看| 亚洲一二三在线| 4438全国成人免费| 日韩av网站在线| 都市激情亚洲色图| 国产精品久久久久久久久久久久久久| xxx一区二区| 日本一区二区在线播放| 亚州国产精品久久久| 国产亚洲精品久久久优势| 日韩高清av在线| 欧美又大又硬又粗bbbbb| 国内精品久久久久影院优| 欧美韩日一区二区| 欧洲精品毛片网站| 国产在线不卡精品| 欧美专区在线播放| 91精品国产自产91精品| 青草成人免费视频| 成人网中文字幕| 欧美极品在线视频| 国产精品一区二区女厕厕| 亚洲国产日韩欧美在线动漫| 97视频在线观看亚洲| 欧美日韩国产黄| 日本精品性网站在线观看| 成人中文字幕+乱码+中文字幕| 国产在线播放不卡| 久久久www成人免费精品| 国产日韩在线亚洲字幕中文| 日韩久久免费视频| 国产va免费精品高清在线| www亚洲精品| 搡老女人一区二区三区视频tv| 亚洲精品综合久久中文字幕| 亚洲精品日韩欧美| 成人高h视频在线| 色偷偷噜噜噜亚洲男人的天堂| 久久久久亚洲精品成人网小说| 欧美激情视频三区| 亚洲午夜性刺激影院| 成人激情视频在线观看| 亚洲欧美中文日韩在线| 伊人伊成久久人综合网站| 久久久久五月天| 日韩欧美中文字幕在线播放| 91成人免费观看网站| 欧美猛交ⅹxxx乱大交视频| 日韩av在线导航| 国产99视频在线观看| 富二代精品短视频| 成人免费淫片视频软件| 91免费综合在线| 亚洲国产精品999| 成人乱人伦精品视频在线观看| 欧美一级成年大片在线观看| 精品亚洲va在线va天堂资源站| 亚洲综合中文字幕在线观看| 81精品国产乱码久久久久久| 亚洲精品福利视频| 久久亚洲一区二区三区四区五区高| 亚洲天堂一区二区三区| 美女福利视频一区| 亚洲综合日韩中文字幕v在线| 98精品在线视频| 国外日韩电影在线观看| 日韩一区二区三区在线播放| 国产精品一区二区久久久久| 欧美日本啪啪无遮挡网站| 亚洲欧洲xxxx| 国产精品一区二区三区毛片淫片| 国产精品视频最多的网站| 亚洲第一精品电影| 久久久久久久久亚洲| 欧美夫妻性视频| 韩剧1988在线观看免费完整版| xxav国产精品美女主播| 久久乐国产精品| 欧美日韩不卡合集视频| 欧美精品videos另类日本| 欧美日韩国产一区二区三区| 国产视频亚洲精品| 国产精品视频在线观看| 97精品国产97久久久久久春色| 国产精品一区二区3区|