偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

MySQL主從復(fù)制

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

如下圖所示:

圖片圖片

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

MySQL主從復(fù)制模式

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

圖片圖片

1.異步復(fù)制

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

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

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

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

2.半同步復(fù)制

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

如下圖所示:

圖片圖片

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

相對(duì)于全同步復(fù)制,半同步復(fù)制在主節(jié)點(diǎn)的性能上有所提高,因?yàn)橹鞴?jié)點(diǎn)無(wú)需等待所有從節(jié)點(diǎn)的確認(rèn)。

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

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

3.全同步復(fù)制

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

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

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

因?yàn)樵蚝芎?jiǎn)單,主節(jié)點(diǎn)必須等待所有從節(jié)點(diǎn)的確認(rèn),才返回。

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

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

MySQL主從復(fù)制原理

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

如下圖所示:

圖片圖片

首先,在主節(jié)點(diǎn)上,開(kāi)啟二進(jìn)制日志記錄功能。

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

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

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

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

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

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

2.Log Dump 線程

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

3.SQL 線程

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

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

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

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

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

2021-06-08 07:48:27

MySQL主從配置

2024-07-04 08:00:24

2025-02-10 10:55:16

2023-03-08 08:44:47

2023-03-19 22:38:12

邏輯復(fù)制PostgreSQL

2023-03-19 11:53:27

2023-07-03 08:57:45

Master服務(wù)TCP

2023-09-24 14:32:15

2025-01-15 15:47:36

2022-12-20 08:46:41

MySQL主從復(fù)制

2017-09-05 16:00:49

MySQL主從復(fù)制備份

2017-10-11 15:40:20

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

2021-03-19 11:33:42

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

2023-02-27 07:33:14

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

2021-07-29 10:39:50

MySQLMySQL5.7MySQL8

2020-04-14 16:26:22

MySQL線程同步

2017-06-23 22:00:13

MySqlsslcentos

2021-01-12 09:03:17

MySQL復(fù)制半同步

2023-04-06 13:15:48

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

2024-07-04 17:22:23

點(diǎn)贊
收藏

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