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

MySQL主從復(fù)制最全詳解

數(shù)據(jù)庫 MySQL
半同步復(fù)制,就是主節(jié)點執(zhí)行寫操作后,等待至少一個從節(jié)點確認(rèn)收到數(shù)據(jù)后再返回給客戶端,這就是半同步復(fù)制。

MySQL主從復(fù)制

MySQL主從復(fù)制是一種數(shù)據(jù)庫復(fù)制技術(shù),在主從復(fù)制中,一個數(shù)據(jù)庫服務(wù)器(主節(jié)點,Master)充當(dāng)主服務(wù)器,而其他一個或多個數(shù)據(jù)庫服務(wù)器(從節(jié)點,Slave)充當(dāng)從服務(wù)器。

如下圖所示:

圖片圖片

主節(jié)點上的數(shù)據(jù)庫更改,會被同步到從服務(wù)器上,從而保持從節(jié)點與主節(jié)點數(shù)據(jù)的一致性。

MySQL主從復(fù)制模式

MySQL主從復(fù)制模式主要會包含:異步復(fù)制、半同步、以及全同步復(fù)制三種復(fù)制模式。

圖片圖片

1.異步復(fù)制

MySQL默認(rèn)的復(fù)制是異步的,也就是主節(jié)點執(zhí)行寫操作后,不等待從節(jié)點確認(rèn),直接返回給客戶端。

這種模式下,主節(jié)點與從節(jié)點之間的數(shù)據(jù)同步是異步進行的,主節(jié)點執(zhí)行寫操作后即刻返回給客戶端,而從節(jié)點在后續(xù)時間里異步地復(fù)制主節(jié)點上的變更。

注意:由于從節(jié)點的復(fù)制過程是異步的,可能導(dǎo)致從節(jié)點上的數(shù)據(jù)相對于主節(jié)點存在一定的延遲。

這意味著在某個時間點從節(jié)點上的數(shù)據(jù)可能不是最新的,這一點需要注意,很重要。

2.半同步復(fù)制

半同步復(fù)制,就是主節(jié)點執(zhí)行寫操作后,等待至少一個從節(jié)點確認(rèn)收到數(shù)據(jù)后再返回給客戶端,這就是半同步復(fù)制。

如下圖所示:

圖片圖片

在半同步復(fù)制中,主節(jié)點(Master)上的寫操作在返回給客戶端之前,需要等待至少一個從節(jié)點(Slave)確認(rèn)接收到了這些寫操作。

相對于全同步復(fù)制,半同步復(fù)制在主節(jié)點的性能上有所提高,因為主節(jié)點無需等待所有從節(jié)點的確認(rèn)。

但是,相對于異步復(fù)制,半同步復(fù)制提高了數(shù)據(jù)的安全性。

所以,各自都有優(yōu)缺點,需要根據(jù)自己的實際情況來定,究竟哪個適合半同步,還是異步等。

3.全同步復(fù)制

全同步復(fù)制,很容易理解了,就是子節(jié)點全部同步完后,才返回給主服務(wù)器。

所以,全同步復(fù)制提供了最高級別的數(shù)據(jù)一致性,確保主節(jié)點和所有從節(jié)點上的數(shù)據(jù)保持完全一致。

當(dāng)然,相較于異步復(fù)制和半同步復(fù)制,全同步復(fù)制對主節(jié)點的性能影響更為顯著。

因為原因很簡單,主節(jié)點必須等待所有從節(jié)點的確認(rèn),才返回。

總之,全同步復(fù)制提供了最高級別的數(shù)據(jù)一致性,適用于對數(shù)據(jù)一致性要求極高的場景,但不適合性能要求極高的場景。

所以,上面的3種方案,需要權(quán)衡這種一致性與性能之間的犧牲,來最終選擇。

MySQL主從復(fù)制原理

MySQL主從復(fù)制的實現(xiàn)原理基于:主節(jié)點的二進制日志(Binary Log)和從節(jié)點的復(fù)制線程。

如下圖所示:

圖片圖片

首先,在主節(jié)點上,開啟二進制日志記錄功能。

[mysqld]
log-bin = /var/log/mysql/mysql-bin.log

然后,主節(jié)點上的寫操作(INSERT、UPDATE、DELETE等),將會被記錄到這個二進制日志文件中。

最后,從節(jié)點開始連接到主節(jié)點,獲取主節(jié)點的二進制日志文件,并通過復(fù)制線程將這些日志應(yīng)用到從節(jié)點的數(shù)據(jù)庫中。

MySQL主從復(fù)制中的關(guān)鍵組成部分,這里會涉及到三個線程:I/O 線程、Log Dump 線程、SQL 線程。

1.I/O 線程(I/O Thread)

該線程負(fù)責(zé)連接到主節(jié)點(Master),獲取二進制日志(binlog),并將這些日志寫入從節(jié)點的中繼日志。

2.Log Dump 線程

Master 節(jié)點上,有一個 log dump 線程,是用來發(fā)送日志文件( binlog) 給 slave 的。

3.SQL 線程

該線程負(fù)責(zé)讀取中繼日志(Relay Log),解析其中的二進制日志,并在從節(jié)點上執(zhí)行相應(yīng)的SQL語句。

這三個線程協(xié)同工作,使得從節(jié)點能夠與主節(jié)點保持同步,實現(xiàn)主從復(fù)制。

通過這些步驟,MySQL主從復(fù)制實現(xiàn)了數(shù)據(jù)的同步。

主節(jié)點記錄變更,從節(jié)點連接主節(jié)點并獲取變更,然后在從節(jié)點上應(yīng)用這些變更,最終實現(xiàn)了數(shù)據(jù)的一致性。

責(zé)任編輯:武曉燕 來源: mikechen的互聯(lián)網(wǎng)架構(gòu)
相關(guān)推薦

2024-07-04 08:00:24

2021-06-08 07:48:27

MySQL主從配置

2025-02-10 10:55:16

2023-03-08 08:44:47

2023-03-19 11:53:27

2023-03-19 22:38:12

邏輯復(fù)制PostgreSQL

2023-07-03 08:57:45

Master服務(wù)TCP

2023-09-24 14:32:15

2017-09-05 16:00:49

MySQL主從復(fù)制備份

2017-10-11 15:40:20

MySQL主從復(fù)制拓?fù)浣Y(jié)構(gòu)

2022-12-20 08:46:41

MySQL主從復(fù)制

2025-01-15 15:47:36

2021-03-19 11:33:42

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

2017-06-23 22:00:13

MySqlsslcentos

2020-04-14 16:26:22

MySQL線程同步

2021-07-29 10:39:50

MySQLMySQL5.7MySQL8

2021-01-12 09:03:17

MySQL復(fù)制半同步

2024-07-04 17:22:23

2023-04-06 13:15:48

MySQL復(fù)制原理應(yīng)用實踐

2023-02-27 07:33:14

MySQL數(shù)據(jù)庫服務(wù)器
點贊
收藏

51CTO技術(shù)棧公眾號