成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁技術文章
文章詳情頁

MySQL實現(xiàn)主從復制的原理詳解

瀏覽:35日期:2023-07-20 19:52:12
目錄異步復制半同步復制垂直分庫水平分庫分表

主從復制是怎么實現(xiàn)的呢?

當MySQL數(shù)據(jù)庫發(fā)生寫操作的時候會記錄下binlog,它是一種邏輯日志。有了這個 binlog,從服務器會獲取主服務器的 binlog 文件,然后解析里面的 SQL 語句,在從服務器上面執(zhí)行一遍,保持主從的數(shù)據(jù)一致。

這里面涉及到三個線程:

IO線程

連接到 master 獲取 binlog,并且解析 binlog 寫入中繼日志,這個線程叫做 I/O 線程。

log dump線程

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

sql線程

從庫的 sql 線程,是用來讀取 relay log,把數(shù)據(jù)寫入到數(shù)據(jù)庫的。

主從復制的方式

異步復制

在異步復制中,主庫執(zhí)行完操作后,寫入binlog日志后,就返回客戶端,這一動作就結束了,并不會驗證從庫有沒有收到,完不完整,所以這樣可能會造成數(shù)據(jù)的不一致。

說到底,復制過程中數(shù)據(jù)是否一致,主要取決于Binlog日志的安全性與完整性

在MySQL中,有sync_binlog=n這一參數(shù),他的值表示每進行n次事務提交,MySQL就將Binlog刷新到磁盤。如果這個值為1,就代表每提交一次事務(SQL),就將Binlog往磁盤刷新一次,這樣一來,就算數(shù)據(jù)庫宕機了,那么最多只能損失一次事務的數(shù)據(jù)。

但是,一旦多個事務并發(fā)提交時,由于受sync_binlog的限制,MySQL只能按順序來處理這些請求,另外,高頻率的刷新binlog對IO的影響也很大,進一步影響了數(shù)據(jù)庫的性能,所以,一般這個值都設為0或者其他值,在數(shù)據(jù)的安全性和高并發(fā)下的性能之間取得一個平衡。

為了更加有效的保護Binlog的安全性和完整性,MySQL5 .5之后引入了半同步復制

半同步復制

在異步復制中,我們遇到的一個主要問題就是,在復制過程當中,主庫不會去驗證Binlog有沒有成功復制到從庫,那如果主庫提交一個事務并寫入Binlog中后,當從庫還沒有從主庫得到Binlog時,主庫宕機了或因磁盤損壞等故障導致該事務的Binlog丟失了,那從庫就不會得到這個事務,也就造成了主從數(shù)據(jù)的不一致。

而半同步復制,當主庫每提交一個事務后,不會立即返回,而是等待其中一個從庫接收到Binlog并成功寫入Relay-log中才返回客戶端,所以這樣就保證了一個事務至少有兩份日志,一份保存在主庫的Binlog,另一份保存在其中一個從庫的Relay-log中,從而保證了數(shù)據(jù)的安全性和一致性。

另外,在半同步復制時,如果主庫的一個事務提交成功了,在推送到從庫的過程當中,從庫宕機了或網(wǎng)絡故障,導致從庫并沒有接收到這個事務的Binlog,此時主庫會等待一段時間(這個時間由rpl_semi_sync_master_timeout的毫秒數(shù)決定),如果這個時間過后還無法推送到從庫,那MySQL會自動從半同步復制切換為異步復制,當從庫恢復正常連接到主庫后,主庫又會自動切換回半同步復制。

半同步復制的“半”體現(xiàn)在,雖然主從庫的Binlog是同步的,但主庫不會等待從庫執(zhí)行完Relay-log后才返回,而是確認從庫接收到Binlog,達到主從Binlog同步的目的后就返回了,所以從庫的數(shù)據(jù)對于主庫來說還是有延時的,這個延時就是從庫執(zhí)行Relay-log的時間。所以只能稱為半同步。

總之這兩種策略,可以濃縮理解為,一個是“不管不問”,一個是“確認到位就跑”。

讀寫分離

做了主從復制的方案之后,我們只把數(shù)據(jù)寫入 master 節(jié)點,而讀的請求可以分擔到slave 節(jié)點, 這種方案我們稱之為讀寫分離。

讀寫分離可以一定程度低減輕數(shù)據(jù)庫服務器的訪問壓力,但是需要特別注意主從數(shù)據(jù)一致性的問題。

我們在做了主從復制之后,如果單個 master 節(jié)點或者單張表存儲的數(shù)據(jù)過大的時候,比如一張表有上億的數(shù)據(jù),單表的查詢性能還是會下降,我們要進一步對單臺數(shù)據(jù)庫節(jié)點的數(shù)據(jù)進行拆分,而這個拆分就是分庫分表。

常見的分庫分表策略

垂直分庫

把一個數(shù)據(jù)庫按照業(yè)務拆分成不同的數(shù)據(jù)庫:

水平分庫分表

把單張表的數(shù)據(jù)按照一定的規(guī)則分布到多個數(shù)據(jù)庫。

到此這篇關于MySQL實現(xiàn)主從復制的原理詳解的文章就介紹到這了,更多相關MySQL 主從復制內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

主站蜘蛛池模板: 色综合久久一本首久久 | 二区中文字幕 | 亚洲高清一区二区三区 | 久久精品国产亚洲综合色 | 亚洲综合国产 | 日韩特级毛片免费观看视频 | 日韩一级a毛片欧美一级 | 国产在线播放一区二区 | 亚洲国产日韩欧美一区二区三区 | 韩日黄色片 | 国产91免费在线 | 亚洲精品韩国美女在线 | 欧美日韩精品一区二区视频在线观看 | 一级毛片免费播放视频 | 日韩精品亚洲一级在线观看 | 不卡一级aaa全黄毛片 | 热99re久久精品精品免费 | 美国一级大黄香蕉片 | 午夜影院欧美 | 中文国产成人精品少久久 | 国产操操 | 久久精品国产欧美日韩99热 | 99久久综合精品国产 | 男女性高爱潮免费网站 | 亚洲特级黄色片 | 成年人网站在线观看免费 | www中文字幕在线观看 | 久久久久久久综合色一本 | 免费刺激视频 | 国产不卡在线观看视频 | 久久一区视频 | 免费区一级欧美毛片 | 久久久久久久久国产 | 国产男女 爽爽爽爽视频 | 一区二区三区四区在线 | 毛片免费观看日本中文 | 加勒比色综合久久久久久久久 | 欧美性夜欢 | 国产高清在线精品一区a | 在线精品一区二区三区 | 自拍视频在线 |