自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

揭秘MySQL主從復制:數(shù)據(jù)同步的幕后故事

數(shù)據(jù)庫 MySQL
在全同步復制模式下,主庫在完成事務后,會等待所有從庫完成數(shù)據(jù)復制后,才向客戶端反饋。這種方式雖然提高了安全性,但性能較差,尤其在從庫數(shù)量較多時,整個過程將顯得更加漫長。

MySQL 的主從復制基于 binlog 實現(xiàn),其主要過程如下:

圖片圖片

  1. 從服務器在開啟主從復制后,將會創(chuàng)建兩個線程:I/O 線程與 SQL 線程。
  2. 從服務器的 I/O 線程會嘗試與主服務器建立連接,主服務器中則有一個專門與從服務器的 I/O 線程進行交互的 binlog dump 線程。
  3. 從服務器的 I/O 線程會向主服務器的 dump 線程指明其接收 binlog 的起始位置。
  4. 在主服務器的更新過程中,更改記錄會被保存到其 binlog 中,依據(jù)不同的 binlog 格式,記錄的內(nèi)容可能有所不同。
  5. 當 dump 線程檢測到 binlog 發(fā)生變化時,將從指定位置開始讀取內(nèi)容,并由從服務器的 I/O 線程將其拉取過來。

這里需要注意的是,盡管某些資料提到主服務器向從服務器推送數(shù)據(jù),實際上,過程是從服務器主動向主服務器拉取的。(https://dev.mysql.com/doc/refman/8.0/en/replication-implementation.html)

拉的模式,從庫可以自行管理同步進度和處理延遲。

  • 從服務器的 I/O 線程在接收到通知事件后,會將內(nèi)容保存至 relay log 中。
  • 從服務器的 SQL 線程則會不斷讀取自身的 relay log,將內(nèi)容解析為具體操作,并將其寫入數(shù)據(jù)表中。

復制方式

MySQL 目前支持多種復制方式,包括全同步復制、異步復制和半同步復制。

異步復制:這是 MySQL 的默認復制方式。在異步復制中,主庫在執(zhí)行完事務后會立即向客戶端返回,無需關心從庫是否完成該事務的執(zhí)行。這種方式可能導致問題:當主庫發(fā)生故障時,盡管事務已執(zhí)行完畢,但數(shù)據(jù)可能尚未同步至從庫,導致從庫在升級為主庫時丟失此次事務的變更內(nèi)容。

全同步復制:在全同步復制模式下,主庫在完成事務后,會等待所有從庫完成數(shù)據(jù)復制后,才向客戶端反饋。這種方式雖然提高了安全性,但性能較差,尤其在從庫數(shù)量較多時,整個過程將顯得更加漫長。

半同步復制:半同步復制介于全同步與異步之間。當主庫執(zhí)行完事務后,它不會立即反饋給客戶端,而是等待至少一個從庫完成接收事件后再反饋。在這一方案中,主庫會在事務提交的兩個階段完成后,等待從庫接收到 binlog 后,再返回成功。

在上面這篇中所繪制的圖示中,如果將半同步復制的過程也納入其中,那么圖示將會變?yōu)椋?/p>

圖片圖片

責任編輯:武曉燕 來源: 碼上遇見你
相關推薦

2012-11-26 10:17:44

InnoDB

2024-07-04 08:00:24

2025-02-10 10:55:16

2024-03-01 18:33:59

MySQL節(jié)點數(shù)據(jù)

2021-06-08 07:48:27

MySQL主從配置

2017-09-05 16:00:49

MySQL主從復制備份

2017-10-11 15:40:20

MySQL主從復制拓撲結構

2025-01-15 15:47:36

2023-03-19 22:38:12

邏輯復制PostgreSQL

2023-03-19 11:53:27

2021-03-19 11:33:42

MySQL數(shù)據(jù)庫備份

2021-01-12 09:03:17

MySQL復制半同步

2020-04-14 16:26:22

MySQL線程同步

2017-06-23 22:00:13

MySqlsslcentos

2023-02-27 07:33:14

MySQL數(shù)據(jù)庫服務器

2023-07-03 08:57:45

Master服務TCP

2023-09-24 14:32:15

2022-12-20 08:46:41

MySQL主從復制

2011-04-06 09:59:00

MySQL數(shù)據(jù)庫主從復制

2024-07-04 17:22:23

點贊
收藏

51CTO技術棧公眾號