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

?

基于Keepalived和Mycat的MySQL數(shù)據(jù)庫高可用性設(shè)計與實(shí)現(xiàn)

2022-08-26 01:51:50廖卓姚敏余筱黃俊銘
現(xiàn)代信息科技 2022年11期
關(guān)鍵詞:自動狀態(tài)數(shù)據(jù)庫

廖卓,姚敏,余筱,黃俊銘

(中移互聯(lián)網(wǎng)有限公司,廣東 廣州 510640)

0 引 言

移動認(rèn)證是中國移動推出的一款應(yīng)用運(yùn)營商特有的通信能力實(shí)現(xiàn)移動網(wǎng)絡(luò)環(huán)境下用戶身份自動識別的產(chǎn)品。該產(chǎn)品已廣泛應(yīng)用于金融、電商、醫(yī)療、教育等千行百業(yè),主要使用場景為APP、H5頁面的用戶登錄環(huán)節(jié)。在移動認(rèn)證的產(chǎn)品運(yùn)營維護(hù)過程中,客戶提出了極高的SLA等級要求。移動認(rèn)證平臺由若干業(yè)務(wù)模塊、中間件組成,其中數(shù)據(jù)庫作為業(yè)務(wù)數(shù)據(jù)及狀態(tài)記錄的組件,貫穿于業(yè)務(wù)流程的各個環(huán),數(shù)據(jù)庫的穩(wěn)定運(yùn)行是保障產(chǎn)品可用性的重要環(huán)節(jié)。

本文針對移動認(rèn)證的MySQL數(shù)據(jù)庫故障后無法實(shí)現(xiàn)快速自動切換的問題,提出了以下解決措施:(1)設(shè)計一套數(shù)據(jù)庫健康檢測模型,精準(zhǔn)識別數(shù)據(jù)庫異常。(2)設(shè)計一種聯(lián)動健康檢測結(jié)果控制數(shù)據(jù)庫切換的方法,實(shí)現(xiàn)快速切換。實(shí)驗結(jié)果表明該方案可有效實(shí)現(xiàn)數(shù)據(jù)庫故障秒級切換,較好提升數(shù)據(jù)庫運(yùn)行穩(wěn)定度,實(shí)現(xiàn)移動認(rèn)證產(chǎn)品可用性提升,滿足客戶需求。

1 MySQL部署架構(gòu)及問題分析

MySQL常見的高可用部署架構(gòu)包括基于復(fù)制的主從部署架構(gòu)、MySQL Cluster等。其中MySQL Cluster配置復(fù)雜,維護(hù)成本較高。移動認(rèn)證平臺數(shù)據(jù)庫采用主從部署架構(gòu),主從復(fù)制技術(shù)將主數(shù)據(jù)庫中的DDL和DML操作通過二進(jìn)制日志傳輸?shù)綇臄?shù)據(jù)庫上,然后將這些日志重新執(zhí)行(重做),從而使得從數(shù)據(jù)庫的數(shù)據(jù)與主數(shù)據(jù)庫保持一致。

雖然基于復(fù)制的主從部署架構(gòu)可支持主數(shù)據(jù)庫故障切換至從數(shù)據(jù)庫,但切換過程依賴于人工手動切換。對于可靠性要求較高的系統(tǒng),人工切換無法滿足服務(wù)需要。

2 MySQL高可用方案設(shè)計

為解決上述主用數(shù)據(jù)庫故障無法快速自動切換問題,設(shè)計了一套基于健康檢測的自動切換方案。首先設(shè)計了一個判斷數(shù)據(jù)庫運(yùn)行狀態(tài)的健康檢測模型,探測程序?qū)⒉杉瘮?shù)據(jù)庫運(yùn)行的相關(guān)數(shù)據(jù),通過模型分析判斷數(shù)據(jù)庫的健康狀態(tài)。其次開發(fā)了一個可執(zhí)行自動切換的程序,該程序執(zhí)行條件為健康檢測模型判斷當(dāng)前數(shù)據(jù)庫主庫異常。整體架構(gòu)如圖1所示。

圖1 高可用方案架構(gòu)圖

2.1 健康檢測模型設(shè)計

實(shí)現(xiàn)故障數(shù)據(jù)庫自動切換的前提是能實(shí)時、準(zhǔn)確地判斷數(shù)據(jù)異常狀態(tài)。因此設(shè)計了數(shù)據(jù)庫健康檢測模型,該模型基于若干健康檢測因子實(shí)時探測數(shù)據(jù)運(yùn)行狀態(tài)。當(dāng)模型檢測判斷數(shù)據(jù)庫運(yùn)行處于異常狀態(tài)時,并且該異常狀態(tài)達(dá)到設(shè)定的條件,則觸發(fā)切換動作,保障故障數(shù)據(jù)庫被備用數(shù)據(jù)庫迅速接管,保持業(yè)務(wù)服務(wù)連續(xù)性,降低用戶感知。模型的流程如圖2所示。

圖2 數(shù)據(jù)庫自動檢測與切換模型流程圖

2.1.1 模型說明

不妨假設(shè)數(shù)據(jù)庫異常狀態(tài)發(fā)生在時刻t時刻,用脈沖函數(shù)代表(-t)該異常,那么t時間段內(nèi)異常狀態(tài)函數(shù)如Φ)如式(1)所示,那么數(shù)據(jù)庫狀態(tài)模型的智能檢測函數(shù)H()如式(2)所示,當(dāng)檢測函數(shù)H()達(dá)到所設(shè)置的閾值,即會觸發(fā)自動切換:

2.1.2 智能檢測因子

智能數(shù)據(jù)庫狀態(tài)檢測模塊,對數(shù)據(jù)庫的心跳、端口服務(wù)、業(yè)務(wù)指令執(zhí)行情況等進(jìn)行檢測,任一項出現(xiàn)問題即發(fā)生異常狀態(tài),此時Φ值為1。

2.1.3 智能檢測算法

算法的核心在于智能檢測因子和累加器,使模型能夠智能地檢測數(shù)據(jù)庫異常狀態(tài)的發(fā)生。它會周期性地對監(jiān)控檢測因子,當(dāng)智能檢測因子達(dá)到觸發(fā)故障條件后,即可實(shí)現(xiàn)實(shí)時、自動化的故障檢測與切換;累加器則是能夠記錄每個周期的檢測因子信息,在設(shè)定的事件范圍內(nèi),若累加器記錄的檢測因子達(dá)到觸發(fā)故障條件后,能夠觸發(fā)自動切換,該策略能有效解決數(shù)據(jù)庫狀態(tài)短時間內(nèi)大幅度波動導(dǎo)致無法切換的問題,增加切換準(zhǔn)確率。模型偽代碼如圖3所示。

圖3 模型偽代碼

2.2 自動切換方案設(shè)計

切換的本質(zhì)是應(yīng)用服務(wù)連接新的數(shù)據(jù)庫,通常來講應(yīng)用服務(wù)可以通過域名、IP的方式訪問數(shù)據(jù)庫。當(dāng)使用域名訪問時,實(shí)現(xiàn)主備庫切換,需要更換域名A記錄,該方法的主要問題為應(yīng)用集群更新A記錄難以做到完全同步。當(dāng)使用IP訪問時,實(shí)現(xiàn)主備庫切換,需要更新應(yīng)用程序連接數(shù)據(jù)的IP相關(guān)配置,此時需要重啟應(yīng)用服務(wù),時效性難以保證。

本文設(shè)計一種基于Keepalived機(jī)制的切換方案。該方案并不直接按照常規(guī)做法使用Keepalived來實(shí)現(xiàn)VIP的自動切換,而是僅用Keepalived的服務(wù)來綁定VIP對應(yīng)的具體Mycat服務(wù)器MAC地址。之所以采用該方案,是為了避免在網(wǎng)絡(luò)異常或者其他原因造成Keepalived的VRRP協(xié)議發(fā)生腦裂情況下的應(yīng)用無法連接到數(shù)據(jù)庫。具體做法如圖4所示。

圖4 數(shù)據(jù)庫自動切換流程圖

(1)初始化狀態(tài)下,在主用Mycat服務(wù)器開啟Keepalived服務(wù),并綁定VIP至主用Mycat服務(wù)器。(2)當(dāng)健康檢測程序判斷主用數(shù)據(jù)正常時,Keepalived服務(wù)及其相關(guān)配置保持不變。(3)當(dāng)健康檢測程序判斷主用數(shù)據(jù)庫異常時,判斷程序?qū)㈥P(guān)閉主用Mycat的Keepalived服務(wù),刪除其VIP綁定關(guān)系,開啟備用數(shù)據(jù)庫Keepalived服務(wù),并綁定VIP至備用Mycat。

3 實(shí)驗及分析

MySQL數(shù)據(jù)庫使用8臺服務(wù)器部署8個實(shí)例,其中前4個為主用實(shí)例,后4個為備用實(shí)例。使用2臺服務(wù)器分別部署主用Mycat、備用Mycat。使用1臺服務(wù)器部署健康檢測及切換程序。具體配置如表1所示。

表1 實(shí)驗環(huán)境配置

3.1 自動切換時效性測試

根據(jù)本文設(shè)計的方案,時效性主要取決于健康檢測腳本探測到異常所耗費(fèi)的時間。決定探測異常耗費(fèi)時間的幾個參數(shù)因子包括:探測時間間隔,判定MySQL服務(wù)異常連續(xù)探測失敗次數(shù)。通過設(shè)置不同判定參數(shù),時效性測試結(jié)果如表2所示。

表2 切換時效性測試結(jié)果

從上述測試可知,隨著探測間隔時間增加、探測累計異常次數(shù)增加,異常切換所花費(fèi)的時間呈線性增加。對比參照組,當(dāng)采用人工手動切換,該方案可實(shí)現(xiàn)切換效率的極大提升。

3.2 自動切換成功率測試

自動切換準(zhǔn)確性測試主要衡量在不同異常場景下數(shù)據(jù)庫是否都能實(shí)現(xiàn)切換。根據(jù)實(shí)際環(huán)境中可能存在的問題,設(shè)計以下異常場景:網(wǎng)絡(luò)中斷、網(wǎng)絡(luò)波動(間斷性中斷)、Mycat主用服務(wù)異常中斷、個別MySQL主用實(shí)例異常中斷、全部MySQL主用實(shí)例異常中斷。測試情況如表3所示。

表3 切換成功率測試結(jié)果

通過上述測試,發(fā)現(xiàn)除網(wǎng)絡(luò)波動異常場景外,該方案能實(shí)現(xiàn)異常場景的準(zhǔn)確切換。分析網(wǎng)絡(luò)波動場景,因切換觸發(fā)條件設(shè)置為連續(xù)異常則切換,在不穩(wěn)定場景下,部分情況因未達(dá)到連續(xù)異常的條件,導(dǎo)致切換失敗。因此進(jìn)一步優(yōu)化異常判定模型,在一段時間內(nèi)累計觸發(fā)異常次數(shù),及判定為異常且執(zhí)行切換。優(yōu)化后的網(wǎng)絡(luò)波動場景下的測試情況如表4所示。

表4 優(yōu)化后測試結(jié)果

4 結(jié) 論

移動認(rèn)證核心業(yè)務(wù)流程強(qiáng)依賴于MySQL數(shù)據(jù)庫,如果數(shù)據(jù)庫出現(xiàn)故障,將會影響移動認(rèn)證對外提供服務(wù)。本文設(shè)計了一種故障場景下數(shù)據(jù)庫主備庫自動切換的高可用方案。該方案包括了實(shí)時檢測數(shù)據(jù)庫健康狀態(tài)的模型,當(dāng)程序探測到異常時,通過修改主、備數(shù)據(jù)庫Keepalived服務(wù)配置,觸發(fā)數(shù)據(jù)庫自動切換,恢復(fù)數(shù)據(jù)庫服務(wù)。實(shí)驗結(jié)果表明這套高可用方案滿足移動認(rèn)證數(shù)據(jù)庫故障自動切換要求,降低了故障切換時間、保障了移動認(rèn)證平臺穩(wěn)定運(yùn)行。

猜你喜歡
自動狀態(tài)數(shù)據(jù)庫
自動捕盜機(jī)
狀態(tài)聯(lián)想
基于STM32的自動喂養(yǎng)機(jī)控制系統(tǒng)
電子測試(2018年10期)2018-06-26 05:53:36
生命的另一種狀態(tài)
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
關(guān)于自動駕駛
汽車博覽(2016年9期)2016-10-18 13:05:41
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
熱圖
家庭百事通(2016年3期)2016-03-14 08:07:17
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
堅持是成功前的狀態(tài)
山東青年(2016年3期)2016-02-28 14:25:52
贵南县| 彩票| 英超| 济阳县| 巫溪县| 黄陵县| 万安县| 淳化县| 普格县| 芜湖市| 大方县| 滦平县| 正定县| 东台市| 将乐县| 晋江市| 辛集市| 云南省| 安陆市| 剑川县| 晋宁县| 焦作市| 高安市| 阿瓦提县| 曲周县| 田东县| 兖州市| 和龙市| 三河市| 綦江县| 山阴县| 崇州市| 大宁县| 来凤县| 黄冈市| 汽车| 左云县| 锡林郭勒盟| 孝感市| 青田县| 兴化市|