中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

MySQL主從復制的原理分析

本篇文章為大家展示了MySQL主從復制的原理分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

十余年專注成都網站制作,成都定制網站,個人網站制作服務,為大家分享網站制作知識、方案,網站設計流程、步驟,成功服務上千家企業。為您提供網站建設,網站制作,網頁設計及定制高端網站建設服務,專注于成都定制網站,高端網頁制作,對成都發電機維修等多個方面,擁有豐富的營銷推廣經驗。

MySQL主從復制的原理分析

主從復制是怎么實現的呢?更新語句會記錄 binlog,它是一種邏輯日志。有了這個 binlog,從服務器會獲取主服務器的 binlog  文件,然后解析里面的 SQL 語句,在從服務器上面執行一遍,保持主從的數據一致。

這里面涉及到三個線程,連接到 master 獲取 binlog,并且解析 binlog 寫入中繼日 志,這個線程叫做 I/O 線程。Master  節點上有一個 log dump 線程,是用來發送 binlog 給 slave 的。從庫的 SQL 線程,是用來讀取 relay  log,把數據寫入到數據庫的。

做了主從復制的方案之后,我們只把數據寫入 master 節點,而讀的請求可以分擔到 slave 節點。我們把這種方案叫做讀寫分離。

MySQL主從復制的原理分析

讀寫分離可以一定程度地減輕數據庫服務器的訪問壓力,但是需要特別注意主從數 據一致性的問題。如果我們在 master 寫入了,馬上到 slave  查詢,而這個時候 slave 的 數據還沒有同步過來,怎么辦? 所以,基于主從復制的原理,我們需要弄明白,主從復制到底慢在哪里?

單線程

在早期的 MySQL 中,slave 的 SQL 線程是單線程。master 可以支持 SQL 語句的并 行執行,配置了多少的最大連接數就是最多同時多少個  SQL 并行執行。而 slave 的 SQL 卻只能單線程排隊執行,在主庫并發量很大的情況下,同步數據肯 定會出現延遲為什么從庫上的 SQL Thread  不能并行執行呢?舉個例子,主庫執行了多條 SQL 語 句,首先用戶發表了一條評論,然后修改了內容,最后把這條評論刪除了。這三條語句  在從庫上的執行順序肯定是不能顛倒的

insert into user_comments (10000009,'nice');  update user_comments set content ='very good' where id =10000009;  delete from user_comments where id =10000009;

怎么解決這個問題呢?怎么減少主從復制的延遲?

異步與全同步

首先我們需要知道,在主從復制的過程中,MySQL 默認是異步復制的。也就是說, 對于主節點來說,寫入 binlog,事務結束,就返回給客戶端了。對于  slave 來說,接收 到 binlog,就完事兒了,master 不關心 slave 的數據有沒有寫入成功。

MySQL主從復制的原理分析

如果要減少延遲,是不是可以等待全部從庫的事務執行完畢,才返回給客戶端呢? 這樣的方式叫做全同步復制。從庫寫完數據,主庫才返會給客戶端。

這種方式雖然可以保證在讀之前,數據已經同步成功了,但是帶來的副作用大家應 該能想到,事務執行的時間會變長,它會導致 master  節點性能下降。有沒有更好的辦法呢?既減少 slave 寫入的延遲,又不會明顯增加 master 返回給客 戶端的時間?

半同步復制

介于異步復制和全同步復制之間,還有一種半同步復制的方式。主庫在執行完客戶端提交的事務后不是立刻返回給客戶端,而是等待至少一個從庫 接收到 binlog  并寫到 relay log 中才返回給客戶端。master 不會等待很長的時間,但是 返回給客戶端的時候,數據就即將寫入成功了,因為它只剩最后一步了:就是讀取  relay log,寫入從庫。

MySQL主從復制的原理分析

如果我們要在數據庫里面用半同步復制,必須安裝一個插件,這個是谷歌的一位工 程師貢獻的。這個插件在 mysql 的插件目錄下已經有提供:cd  /usr/lib64/mysql/plugin/主庫和從庫是不同的插件,安裝之后需要啟用:

-- 主庫執行  INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; set global rpl_semi_sync_master_enabled=1;  show variables like '%semi_sync%';    -- 從庫執行  INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';  set global rpl_semi_sync_slave_enabled=1;  show global variables like '%semi%';

相對于異步復制,半同步復制提高了數據的安全性,同時它也造成了一定程度的延 遲,它需要等待一個 slave  寫入中繼日志,這里多了一個網絡交互的過程,所以,半同步 復制最好在低延時的網絡中使用。

這個是從主庫和從庫連接的角度,來保證 slave 數據的寫入。

另一個思路,如果要減少主從同步的延遲,減少 SQL 執行造成的等待的時間,那有 沒有辦法在從庫上,讓多個 SQL  語句可以并行執行,而不是排隊執行呢?

多庫并行復制

怎么實現并行復制呢?設想一下,如果 3 條語句是在三個數據庫執行,操作各自的 數據庫,是不是肯定不會產生并發的問題呢?執行的順序也沒有要求。當然是,所以如  果是操作三個數據庫,這三個數據庫的從庫的 SQL 線程可以并發執行。這是 MySQL 5.6 版本里面支持的多庫并行復制。

MySQL主從復制的原理分析

但是在大部分的情況下,我們都是單庫多表的情況,在一個數據庫里面怎么實現并 行復制呢?或者說,我們知道,數據庫本身就是支持多個事務同時操作的;為什么這些  事務在主庫上面可以并行執行,卻不會出現問題呢?

因為他們本身就是互相不干擾的,比如這些事務是操作不同的表,或者操作不同的 行,不存在資源的競爭和數據的干擾。那在主庫上并行執行的事務,在從庫上肯定也是  可以并行執行,是不是?比如在 master 上有三個事務同時分別操作三張表,這三個事務 是不是在 slave 上面也可以并行執行呢?

5 異步復制之 GTID 復制

https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html所以,我們可以把那些在主庫上并行執行的事務,分為一個組,并且給他們編號,  這一個組的事務在從庫上面也可以并行執行。這個編號,我們把它叫做 GTID(Global Transaction  Identifiers),這種主從復制的方式,我們把它叫做基于 GTID 的復制。

MySQL主從復制的原理分析

如果我們要使用 GTID 復制,我們可以通過修改配置參數打開它,默認是關閉的:

show global variables like 'gtid_mode';

無論是優化 master 和 slave 的連接方式,還是讓從庫可以并行執行 SQL,都是從數 據庫的層面去解決主從復制延遲的問題。

上述內容就是MySQL主從復制的原理分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創新互聯行業資訊頻道。

網站題目:MySQL主從復制的原理分析
分享網址:http://www.2m8n56k.cn/article40/jojieo.html

成都網站建設公司_創新互聯,為您提供企業建站做網站軟件開發微信小程序網站導航動態網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站建設網站維護公司
主站蜘蛛池模板: 嫩草影院在线观看网站成人 | 三级视频网站在线观看播放 | 日本69色视频在线观看 | 久久99综合国产精品亚洲首页 | 韩日三级视频 | 欧美精品色精品一区二区三区 | 免费久草 | 欧美日韩另类视频 | 亚洲欧洲国产视频 | 成人一级片| 欧美熟videos肥婆 | 国产精品久久久久久一区二区三区 | 荡女妇边被c边呻吟久久 | 全部免费的毛片在线看美国 | 亚洲精品第一区二区在线 | 国产一区成人 | 草草草在线观看 | 怡红院在线观看在线视频 | 国产成人mv在线观看入口视频 | 成年男女免费视频网站 | 欧美三级成版人版在线观看 | 中国一级大黄大片 | 欧美亚洲国产精品久久久久 | 欧美一级毛片免费高清aa | 日本男人的天堂 | 国产成在线观看免费视频成本人 | 日韩国产欧美在线观看 | 亚洲www| 国产日韩一区二区三区在线观看 | 日本s色大片在线观看 | 久久一区视频 | 国产色司机在线视频免费观看 | 91成年人视频 | 欧美人成在线观看网站高清 | 国产精品免费一区二区三区四区 | 久久99精品久久久久久野外 | 亚洲aⅴ男人的天堂在线观看 | 九九免费精品视频在这里 | 国产中文在线视频 | 国产三级久久久精品三级 | 久久国产精品久久久久久久久久 |