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

讀寫分離最全詳解(圖文全面總結(jié))

數(shù)據(jù)庫 其他數(shù)據(jù)庫
讀寫分離是提升數(shù)據(jù)庫性能和擴(kuò)展性的有效手段,通過將讀操作分散到多個從數(shù)據(jù)庫上,可以顯著提高系統(tǒng)的并發(fā)處理能力、和響應(yīng)速度。

讀寫分離

讀寫分離是一種常見的數(shù)據(jù)庫架構(gòu)設(shè)計,從字面上就很容易理解,就是數(shù)據(jù)的:“讀”、和“寫”分離。

如下圖所示:

圖片圖片

寫操作(包括:插入、更新和刪除操作...等等),由主數(shù)據(jù)庫(Master)處理。

而讀操作(包括:查詢...等操作),由從數(shù)據(jù)庫(Slave)處理。

這就是“讀寫分離”,通過將讀操作分散到多個從數(shù)據(jù)庫上,減少主數(shù)據(jù)庫的負(fù)載,從而,極大的提升整個系統(tǒng)的并發(fā)處理能力。

讀寫分離實現(xiàn)原理

上面我們談了“讀寫分離”的價值,對于互聯(lián)網(wǎng)應(yīng)用“讀多”和“寫少”的場景,比如:電商等典型業(yè)務(wù)是非常適用的。

知道了其重要性,下面我接著談:如何來實現(xiàn)”讀寫分離“?

讀寫分離的架構(gòu)實現(xiàn),整體如下圖所示:

圖片圖片

從上圖可看出,讀寫分離是基于:“主從復(fù)制架構(gòu)”來實現(xiàn)的。

  • 主數(shù)據(jù)庫:負(fù)責(zé)處理所有的寫操作(比如:插入、更新、刪除...)。
  • 從數(shù)據(jù)庫:通過復(fù)制機(jī)制從主數(shù)據(jù)庫獲取并應(yīng)用數(shù)據(jù)更改,處理所有的讀操作。

通過上面的講述,知道了實現(xiàn)機(jī)制依賴于“主從復(fù)制”。

所以,要掌握好讀寫分離的原理,還需要掌握“主從復(fù)制”的實現(xiàn)機(jī)制原理。

下面,我接著談@mikechen

我以MySQL的主從復(fù)制為例,整體架構(gòu)實現(xiàn),如下圖所示:

圖片圖片

實現(xiàn)步驟,大致分為如下幾點:

第一步:主數(shù)據(jù)庫記錄二進(jìn)制日志(binlog);

比如:當(dāng)主數(shù)據(jù)庫執(zhí)行寫操作,比如:INSERT、UPDATE、DELETE。。。等操作時,首先,這些操作會被記錄到二進(jìn)制日志中。

MySQL 二進(jìn)制日志(Binlog):是 MySQL 服務(wù)器用來記錄所有更改數(shù)據(jù)庫數(shù)據(jù)操作的日志文件,包括 DDL 語句和 DML 語句。

[mysqld]
log-bin=mysql-bin           # 啟用二進(jìn)制日志并指定日志文件前綴
server-id=1                 # 設(shè)置服務(wù)器唯一 ID
binlog-format=row           # 設(shè)置 Binlog 格式(row、statement、mixed)
expire-logs-days=7          # 自動清除超過7天的 Binlog 文件
max_binlog_size=100M        # 單個 Binlog 文件的最大大小

所有數(shù)據(jù)更改的詳細(xì)信息,都放在這個二進(jìn)制文件中,是主從復(fù)制的核心。

第二步:從數(shù)據(jù)庫讀取二進(jìn)制日志(binlog);

從數(shù)據(jù)庫通過I/O線程,連接到主數(shù)據(jù)庫,讀取主數(shù)據(jù)庫的二進(jìn)制日志,并將其保存到本地的中繼日志(relay log)中。

大致流程:

  • I/O線程啟動:從數(shù)據(jù)庫上的I/O線程,使用專用的復(fù)制用戶連接到主數(shù)據(jù)庫;
  • 讀取二進(jìn)制日志:I/O線程讀取主數(shù)據(jù)庫的二進(jìn)制日志,將其內(nèi)容寫入到從數(shù)據(jù)庫的中繼日志中;
  • 日志同步:I/O線程不斷地從主數(shù)據(jù)庫讀取新的二進(jìn)制日志,并更新到中繼日志中。

第三步:從數(shù)據(jù)庫應(yīng)用中繼日志(relay log)。

從數(shù)據(jù)庫的SQL線程讀取中繼日志,并重放其中的寫操作,更新從數(shù)據(jù)庫中的數(shù)據(jù)。

這樣,從數(shù)據(jù)庫的數(shù)據(jù)狀態(tài)就會逐步跟上主數(shù)據(jù)庫。

通過以上步驟,主從復(fù)制實現(xiàn)了主數(shù)據(jù)庫與從數(shù)據(jù)庫之間的數(shù)據(jù)同步,從而可以實現(xiàn)讀寫分離了。

讀寫分離總結(jié)

總之,讀寫分離是提升數(shù)據(jù)庫性能和擴(kuò)展性的有效手段,通過將讀操作分散到多個從數(shù)據(jù)庫上,可以顯著提高系統(tǒng)的并發(fā)處理能力、和響應(yīng)速度。

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

2024-07-26 10:35:00

2024-09-04 09:43:36

2024-08-29 10:23:42

2024-08-08 13:01:53

2024-08-12 16:09:31

2024-11-06 09:54:58

SpringJava開發(fā)

2024-08-13 15:07:20

2025-05-07 03:33:00

2024-08-07 14:56:00

Nginx反向代理配置

2024-07-12 08:42:58

Redis高性能架構(gòu)

2024-12-31 00:00:01

驅(qū)動設(shè)計應(yīng)用場景業(yè)務(wù)邏輯

2024-09-26 13:33:12

2025-01-15 08:34:00

分布式事務(wù)服務(wù)

2024-11-06 12:29:02

2025-01-26 11:54:39

分布式存儲系統(tǒng)

2024-11-15 12:04:33

K8S容器化應(yīng)用

2024-09-14 11:36:02

2023-07-07 08:36:45

配置注解jar

2021-03-26 08:20:51

SpringBoot讀寫分離開發(fā)

2011-08-30 12:49:59

Mysql ProxyLua分離
點贊
收藏

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