mysql主從同步機(jī)制原理

本篇內(nèi)容主要講解“MySQL主從同步機(jī)制原理”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“mysql主從同步機(jī)制原理”吧!

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對(duì)成都網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無(wú)止境。

1、binlog+pos同步(默認(rèn)為異步)

服務(wù)器通過(guò)IO進(jìn)程讀取主庫(kù)的binlog,寫入到relay_log中,

從服務(wù)器通過(guò)sql running進(jìn)程讀取從庫(kù)的relay_log,并寫入到從庫(kù)的bin_Log實(shí)現(xiàn)同步

我們生產(chǎn)一般使用row模式,因?yàn)橛行┖瘮?shù)在使用mix和state模式可能會(huì)報(bào)錯(cuò)。

2、半同步(5.5開始)

半同步就是就是用戶向mysql寫入數(shù)據(jù),先寫入到主庫(kù),然后生成binlog日志。主庫(kù)等待從庫(kù)來(lái)取binlog日志,如果從庫(kù)超過(guò)10秒沒(méi)有來(lái)獲取binlog日志。主庫(kù)自動(dòng)轉(zhuǎn)換為異步,以后用戶寫入數(shù)據(jù)生成binlog日志,等待用戶自己來(lái)取,沒(méi)有取到主庫(kù)也不在管理。

介于異步復(fù)制和全同步復(fù)制之間,主庫(kù)在執(zhí)行完客戶端提交的事務(wù)后不是立刻返回給客戶端,而是等待至少一個(gè)從庫(kù)接收到并寫到relay log中才返回給客戶端。相對(duì)于異步復(fù)制,半同步復(fù)制提高了數(shù)據(jù)的安全性,同時(shí)它也造成了一定程度的延遲,這個(gè)延遲最少是一個(gè)TCP/IP往返的時(shí)間。所以,半同步復(fù)制最好在低延時(shí)的網(wǎng)絡(luò)中使用。

在沒(méi)有指明的情況下,默認(rèn)都是異步復(fù)制。

3、GTID同步(5.6.10開始)

使用UUID+事務(wù)ID作為全局事物標(biāo)識(shí),UUID為每臺(tái)機(jī)器的標(biāo)識(shí)符,事務(wù)ID記錄最新的事務(wù),不在使用binlog+pos開啟復(fù)制。而是使用master_auto_postion=1的方式自動(dòng)匹配GTID斷點(diǎn)進(jìn)行復(fù)制。

4、group replication(5.7.17開始)

基于傳統(tǒng)異步復(fù)制和半同步復(fù)制的缺陷——數(shù)據(jù)的一致性問(wèn)題無(wú)法保證,MySQL官方在5.7.17版本正式推出組復(fù)制,也就是MGR。

由若干個(gè)節(jié)點(diǎn)共同組成一個(gè)復(fù)制組,一個(gè)事務(wù)的提交,必須經(jīng)過(guò)組內(nèi)大多數(shù)節(jié)點(diǎn)(N / 2 + 1)決議并通過(guò),才能得以提交。由3個(gè)節(jié)點(diǎn)組成一個(gè)復(fù)制組,Consensus層為一致性協(xié)議層,在事務(wù)提交過(guò)程中,發(fā)生組間通訊,由2個(gè)節(jié)點(diǎn)決議(certify)通過(guò)這個(gè)事務(wù),事務(wù)才能夠最終得以提交并響應(yīng)。

半同步的開啟方法和前提條件:

要想使用半同步復(fù)制,必須滿足以下幾個(gè)條件:

1. MySQL 5.5及以上版本

2. 變量have_dynamic_loading為YES

3. 異步復(fù)制已經(jīng)存在

1、首先加載插件,主從分別安裝插件

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

2、查看插件是否安裝成功。

1、show plugins;

rpl_semi_sync_master       | ACTIVE   | REPLICATION        | semisync_master.so | GPL 

2、mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS  WHERE PLUGIN_NAME LIKE '%semi%';

+----------------------+---------------+
| PLUGIN_NAME          | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE        |
+----------------------+---------------+
1 row in set (0.00 sec)

3、啟動(dòng)半同步復(fù)制(也可以寫在配置文件中)

SET GLOBAL rpl_semi_sync_master_enabled = 1;

SET GLOBAL rpl_semi_sync_slave_enabled = 1;

4、重啟從上的IO線程

mysql> STOP SLAVE IO_THREAD;

mysql> START SLAVE IO_THREAD;

5、檢查半同步是否正確運(yùn)行

mysql> show status like 'Rpl_semi_sync_master_status';

mysql> show status like 'Rpl_semi_sync_slave_status';

均顯示為ON則正常啟動(dòng)。

到此,相信大家對(duì)“mysql主從同步機(jī)制原理”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

網(wǎng)站標(biāo)題:mysql主從同步機(jī)制原理
本文鏈接:http://muchs.cn/article4/gdeeoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、品牌網(wǎng)站設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣搜索引擎優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)