国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MySQL組復(fù)制技術(shù)數(shù)據(jù)備份策略實(shí)現(xiàn)

2018-04-11 01:57:10重慶電子工程職業(yè)學(xué)院計(jì)算機(jī)學(xué)院朱崇來
電子世界 2018年6期
關(guān)鍵詞:沖突檢測(cè)組內(nèi)插件

重慶電子工程職業(yè)學(xué)院 計(jì)算機(jī)學(xué)院 朱崇來

0.引言

MySQL作為一款開源的關(guān)系型數(shù)據(jù)庫(kù),一直以來是中小企業(yè)的數(shù)據(jù)存儲(chǔ)中心,MySQL采用數(shù)據(jù)復(fù)制技術(shù)實(shí)現(xiàn)數(shù)據(jù)備份與容災(zāi)。

MySQL5.5之前一直采用的是異步復(fù)制技術(shù),主庫(kù)在事務(wù)執(zhí)行時(shí),不會(huì)考慮從庫(kù)的數(shù)據(jù)備份同步問題,一旦主庫(kù)崩潰或是從庫(kù)落后備份,就會(huì)造成數(shù)據(jù)不一致。

MySQL5.5引入了半同步復(fù)制技術(shù),主庫(kù)在提交客戶端事務(wù)時(shí),必須要保證至少有一個(gè)從庫(kù)接收并寫到relaylog中。由于MySQL半同步復(fù)制的實(shí)現(xiàn)是建立在MySQL異步復(fù)制的基礎(chǔ)上的,在網(wǎng)絡(luò)出現(xiàn)異?;蛘卟环€(wěn)定下,如果從庫(kù)沒有收到事務(wù),也就是還沒有寫入到relay log 之前,此時(shí)剛好主庫(kù)崩潰了,系統(tǒng)切換到從機(jī),兩邊的數(shù)據(jù)就會(huì)出現(xiàn)不一致。 在此情況下,半同步復(fù)制退化成異步復(fù)制。這也是MySQL半同步復(fù)制存在的問題。

在2016年,MySQL在5.7引入了MySQL Group Replication是MySQL官方推出的一種基于Paxos協(xié)議的狀態(tài)機(jī)復(fù)制。簡(jiǎn)而言之,就是“一個(gè)組提交的事務(wù)都是可以并行回滾”,這些事務(wù)都已進(jìn)入到事務(wù)的prepare階段,則說明事務(wù)之間沒有任何沖突(否則就不可能提交),進(jìn)一步提高數(shù)據(jù)復(fù)制的強(qiáng)一致性。

1.MySQLGroup Replication框架

MySQLGroup Replication是基于狀態(tài)機(jī)復(fù)制機(jī)制實(shí)現(xiàn)的,是一個(gè)MySQL插件,它建立在現(xiàn)有的MySQL復(fù)制基礎(chǔ)結(jié)構(gòu)上,集成了當(dāng)前的MySQL框架,它用到了binlog的緩存,slave應(yīng)用器,GTID,relay log,replication線程等服務(wù)基礎(chǔ)設(shè)施。MySQL Group Replication 的插件架構(gòu)如下圖1所示:

圖1 MySQL Group Replication 插件架構(gòu)

插件框架的最上層是隔離核心服務(wù)層的API接口層,上層用戶通過訪問API接口與核心層的服務(wù)功能插件通信,包括server的啟動(dòng)、恢復(fù)、接受連接、提交事務(wù)等,組復(fù)制插件根據(jù)相應(yīng)接口的調(diào)用做出相應(yīng)的響應(yīng)動(dòng)作。

核心服務(wù)插件層由capture、applier、recovery三個(gè)組件組成,capture組件是負(fù)責(zé)追蹤正在執(zhí)行的事務(wù)的信息;applier組件負(fù)責(zé)將遠(yuǎn)程事務(wù)加載到本地執(zhí)行;recovery組件主要管理組內(nèi)節(jié)點(diǎn)的最新狀態(tài),執(zhí)行事務(wù)回滾,直到和組內(nèi)的其他節(jié)點(diǎn)保持一致。

Replication協(xié)議層模塊實(shí)現(xiàn)了replication協(xié)議的邏輯,邏輯功能包括:處理沖突檢測(cè)、接收并傳播事務(wù)到組內(nèi)去執(zhí)行。

Group communication API是通信工具集的一種高級(jí)抽象,主要提供Paxos協(xié)議變種的核心實(shí)現(xiàn),綁定了corosync的接口,該接口實(shí)際上是corosync到client API的一個(gè)隱式映射。

2.MySQLGroup Replication原理

MySQL組復(fù)制是一種可用于容錯(cuò)系統(tǒng)的技術(shù),它構(gòu)建在狀態(tài)機(jī)復(fù)制機(jī)制的基礎(chǔ)之上,并利用Paxos的原子廣播原理,實(shí)現(xiàn)多主機(jī)全更新的復(fù)制協(xié)議。復(fù)制組由多個(gè)節(jié)點(diǎn)構(gòu)造一個(gè)數(shù)據(jù)庫(kù)集群,組中的每個(gè)節(jié)點(diǎn)都可以獨(dú)立地執(zhí)行事務(wù)。所有讀寫(RW)事務(wù)只有在被組批準(zhǔn)后才會(huì)提交。只讀(RO)事務(wù)不需要在組內(nèi)協(xié)調(diào),可立即提交。當(dāng)一個(gè)事務(wù)在一個(gè)節(jié)點(diǎn)上提交之前,會(huì)在組內(nèi)自動(dòng)進(jìn)行原子性的廣播,告知其他節(jié)點(diǎn)變更了什么內(nèi)容、執(zhí)行了什么事務(wù),然后為該事務(wù)建立一個(gè)全局的序號(hào)。最終,通過Paxos來保證組內(nèi)事務(wù)數(shù)據(jù)一致。

Group Replication原子廣播的不是原始事務(wù)語句而是事務(wù)的Binlog Events。廣播模塊是嵌在事務(wù)執(zhí)行流程中的,不需要和客戶端交互。當(dāng)事務(wù)語句執(zhí)行完準(zhǔn)備提交時(shí),Group Replication會(huì)捕捉到事務(wù)的Binlog Events然后進(jìn)行原子廣播。

然而,不同的節(jié)點(diǎn)上執(zhí)行的事務(wù)之間有可能存在資源爭(zhēng)用,導(dǎo)致兩個(gè)不同的節(jié)點(diǎn)上并發(fā)執(zhí)行的事務(wù)發(fā)生沖突,因此在每個(gè)節(jié)點(diǎn)上都需要在Certify模塊進(jìn)行沖突檢測(cè),沖突檢測(cè)的過程是在每個(gè)模塊上單獨(dú)進(jìn)行的,不需要在各個(gè)節(jié)點(diǎn)之間交互,所有節(jié)點(diǎn)上的事務(wù)都是按照同樣的順序做的沖突檢測(cè)。所以任何一個(gè)事務(wù)在所有節(jié)點(diǎn)上的沖突檢測(cè)結(jié)果都是相同的。

從其工作的原理可以看出,Group Replication基于Paxos協(xié)議的一致性算法校驗(yàn)事務(wù)執(zhí)行是否有沖突,然后順序執(zhí)行事務(wù),達(dá)到最終的數(shù)據(jù)一致性。

3.基于Group Replication組復(fù)制實(shí)現(xiàn)

(1)MySQL 數(shù)據(jù)庫(kù)組復(fù)制環(huán)境準(zhǔn)備

本實(shí)驗(yàn)環(huán)境的操作系統(tǒng)為CentOS6.8操作系統(tǒng),MySQL 數(shù)據(jù)庫(kù)版本為 MySQL-5.7.17。三臺(tái)名為master01、master02、master03機(jī)器上安裝了 MySQL 數(shù)據(jù)庫(kù)的服務(wù)器,每一臺(tái)機(jī)器的配置如下表1所示。

表1 MySQL 數(shù)據(jù)庫(kù)組復(fù)制環(huán)境配置列表

(2)數(shù)據(jù)庫(kù)主配文件定義/etc/my.cnf, 下面只對(duì)主要參數(shù)作出說明。

圖2 數(shù)據(jù)庫(kù)主配文件參數(shù)命令

(3)通道授權(quán),建立復(fù)制通道并授權(quán)。

圖3 數(shù)據(jù)庫(kù)授權(quán)命令

(4)安裝組復(fù)制插件,并啟動(dòng)。

(5)其余節(jié)點(diǎn)加入集群,其他節(jié)點(diǎn)按照2-4的步驟配置即可。

(6)集群驗(yàn)證∶創(chuàng)建測(cè)試數(shù)據(jù),進(jìn)行集群測(cè)試。在各個(gè)節(jié)點(diǎn)都能看到同步的測(cè)試數(shù)據(jù),說明集群搭建成功。

4.總結(jié)

通過MySQL5.7的組復(fù)制實(shí)驗(yàn)測(cè)試結(jié)果表明:組復(fù)制模式配置比異步復(fù)制、半同步復(fù)制、簡(jiǎn)單高效。在組復(fù)制環(huán)境下,3臺(tái)MySQL實(shí)例組成的組復(fù)制結(jié)構(gòu)下,只要有1臺(tái)主機(jī)存活,整個(gè)MySQL服務(wù)就可用,在故障主機(jī)恢復(fù)之后,組復(fù)制會(huì)自動(dòng)同步數(shù)據(jù),恢復(fù)組復(fù)制狀態(tài),有效地提高了數(shù)據(jù)復(fù)制的一致性和可靠性。

[1]何小川. MySQL數(shù)據(jù)庫(kù)主從復(fù)制的實(shí)現(xiàn)[J].廣東通信技術(shù),2017(10).

[2]管文琦.金融行業(yè)MySQL數(shù)據(jù)庫(kù)可用方案的思考[J].中國(guó)金融電腦,2017(06).

[3]MySQL 5.5:Improving on the World’s Most Popular Open Source Database.Cabral,Sheeri K.Database Trends and Applications.2011:30.

猜你喜歡
沖突檢測(cè)組內(nèi)插件
用心說題 提高效率 培養(yǎng)能力
自編插件完善App Inventor與樂高機(jī)器人通信
電子制作(2019年22期)2020-01-14 03:16:34
獨(dú)立學(xué)院補(bǔ)考安排沖突檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
計(jì)算機(jī)應(yīng)用安全策略本體研究
計(jì)劃協(xié)同工作中的沖突檢測(cè)與消除算法研究
MapWindowGIS插件機(jī)制及應(yīng)用
合作學(xué)習(xí)組內(nèi)交流討論時(shí)間的遵循原則
合作學(xué)習(xí)“組內(nèi)交流討論時(shí)間”注意問題
基于Revit MEP的插件制作探討
合作學(xué)習(xí)組內(nèi)交流討論時(shí)間探究
怀仁县| 昌平区| 吴旗县| 湄潭县| 当涂县| 庆城县| 夏邑县| 新河县| 海安县| 宜阳县| 扶沟县| 武定县| 兰州市| 定日县| 商南县| 达孜县| 自贡市| 江安县| 尉犁县| 韩城市| 甘孜县| 罗山县| 洪泽县| 澎湖县| 南江县| 绍兴市| 玉门市| 东山县| 隆子县| 外汇| 淮南市| 梓潼县| 宜兰县| 平阳县| 临沂市| 凯里市| 时尚| 和硕县| 高阳县| 彰化市| 大荔县|