91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL 中主從復制的原理是什么

發布時間:2021-07-13 14:52:16 來源:億速云 閱讀:169 作者:Leah 欄目:大數據

MySQL 中主從復制的原理是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

如何實現 MySQL 的讀寫分離?

其實很簡單,就是基于主從復制架構,簡單來說,就搞一個主庫,掛多個從庫,然后我們就單單只是寫主庫,然后主庫會自動把數據給同步到從庫上去。

MySQL 主從復制原理的是啥?

主庫將變更寫入 binlog 日志,然后從庫連接到主庫之后,從庫有一個 IO 線程,將主庫的 binlog 日志拷貝到自己本地,寫入一個 relay 中繼日志中。接著從庫中有一個 SQL 線程會從中繼日志讀取 binlog,然后執行 binlog 日志中的內容,也就是在自己本地再次執行一遍 SQL,這樣就可以保證自己跟主庫的數據是一樣的。

MySQL 中主從復制的原理是什么

這里有一個非常重要的一點,就是從庫同步主庫數據的過程是串行化的,也就是說主庫上并行的操作,在從庫上會串行執行。所以這就是一個非常重要的點了,由于從庫從主庫拷貝日志以及串行執行 SQL 的特點,在高并發場景下,從庫的數據一定會比主庫慢一些,是有延時的。所以經常出現,剛寫入主庫的數據可能是讀不到的,要過幾十毫秒,甚至幾百毫秒才能讀取到。

而且這里還有另外一個問題,就是如果主庫突然宕機,然后恰好數據還沒同步到從庫,那么有些數據可能在從庫上是沒有的,有些數據可能就丟失了。

所以 MySQL 實際上在這一塊有兩個機制,一個是半同步復制,用來解決主庫數據丟失問題;一個是并行復制,用來解決主從同步延時問題。

這個所謂半同步復制,也叫 semi-sync 復制,指的就是主庫寫入 binlog 日志之后,就會將強制此時立即將數據同步到從庫,從庫將日志寫入自己本地的 relay log 之后,接著會返回一個 ack 給主庫,主庫接收到至少一個從庫的 ack 之后才會認為寫操作完成了。

所謂并行復制,指的是從庫開啟多個線程,并行讀取 relay log 中不同庫的日志,然后并行重放不同庫的日志,這是庫級別的并行。

MySQL 主從同步延時問題(精華)

以前線上確實處理過因為主從同步延時問題而導致的線上的 bug,屬于小型的生產事故。

是這個么場景。有個同學是這樣寫代碼邏輯的。先插入一條數據,再把它查出來,然后更新這條數據。在生產環境高峰期,寫并發達到了 2000/s,這個時候,主從復制延時大概是在小幾十毫秒。線上會發現,每天總有那么一些數據,我們期望更新一些重要的數據狀態,但在高峰期時候卻沒更新。用戶跟客服反饋,而客服就會反饋給我們。

我們通過 MySQL 命令:

show status

查看 Seconds_Behind_Master,可以看到從庫復制主庫的數據落后了幾 ms。

一般來說,如果主從延遲較為嚴重,有以下解決方案:

  • 分庫,將一個主庫拆分為多個主庫,每個主庫的寫并發就減少了幾倍,此時主從延遲可以忽略不計。

  • 打開 MySQL 支持的并行復制,多個庫并行復制。如果說某個庫的寫入并發就是特別高,單庫寫并發達到了 2000/s,并行復制還是沒意義。

  • 重寫代碼,寫代碼的同學,要慎重,插入數據時立馬查詢可能查不到。

  • 如果確實是存在必須先插入,立馬要求就查詢到,然后立馬就要反過來執行一些操作,對這個查詢設置直連主庫。不推薦這種方法,你要是這么搞,讀寫分離的意義就喪失了。

分布式事務系列:

Spring 分布式事務實現概覽

REST微服務的分布式事務實現-使用Spring Cloud的fallback模式

Spring的分布式事務實現-使用和不使用XA

REST微服務的分布式事務實現-基于消息中間件

REST微服務的分布式事務實現-分布式系統、事務以及JTA介紹

某寶布式事務架構設計

大白話聊聊分布式事務

分布式事務解決方案

消息隊列系列:

為什么使用消息隊列?

如何保證消息隊列的高可用?

如何保證消息不被重復消費?或者說,如何保證消息消費的冪等性?

如何保證消息的可靠性傳輸?或者說,如何處理消息丟失的問題?

如何保證消息的順序性?

如何解決消息隊列的延時以及過期失效問題?消息隊列滿了以后該怎么處理?

分庫分表系列:

為什么要分庫分表?

如何設計才可以讓系統從未分庫分表動態切換到分庫分表上?

如何設計可以動態擴容縮容的分庫分表方案?

分庫分表之后,id 主鍵如何處理?

關于MySQL 中主從復制的原理是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

磐安县| 海兴县| 湟源县| 宜春市| 英德市| 舟曲县| 南丰县| 高要市| 西充县| 桐梓县| 丰镇市| 绥宁县| 新密市| 黄浦区| 普兰店市| 达州市| 革吉县| 南宁市| 奈曼旗| 安达市| 竹北市| 桓仁| 紫阳县| 乾安县| 南靖县| 广饶县| 缙云县| 大宁县| 顺平县| 施甸县| 崇左市| 龙江县| 清涧县| 房产| 双柏县| 屏南县| 娄烦县| 澄江县| 四川省| 阿尔山市| 安西县|