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

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

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

讀寫分離

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

如下圖所示:

圖片圖片

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

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

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

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

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

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

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

圖片圖片

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

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

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

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

下面,我接著談@mikechen

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

圖片圖片

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

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

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

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

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

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

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

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

大致流程:

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

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

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

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

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

讀寫分離總結(jié)

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

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

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-08-13 15:07:20

2024-11-06 09:54:58

SpringJava開發(fā)

2024-12-31 00:00:01

驅(qū)動設計應用場景業(yè)務邏輯

2024-09-26 13:33:12

2024-07-12 08:42:58

Redis高性能架構(gòu)

2024-08-07 14:56:00

Nginx反向代理配置

2024-11-06 12:29:02

2025-01-15 08:34:00

分布式事務服務

2024-11-15 12:04:33

K8S容器化應用

2024-09-14 11:36:02

2025-01-26 11:54:39

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

2021-03-26 08:20:51

SpringBoot讀寫分離開發(fā)

2023-07-07 08:36:45

配置注解jar

2011-08-30 12:49:59

Mysql ProxyLua分離

2016-01-28 14:41:06

CC++編碼
點贊
收藏

51CTO技術棧公眾號