• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

    0 引 言

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

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

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

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

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

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

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

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

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

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

    圖2 數(shù)據(jù)庫(kù)自動(dòng)檢測(cè)與切換模型流程圖

    2.1.1 模型說(shuō)明

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

    2.1.2 智能檢測(cè)因子

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

    2.1.3 智能檢測(cè)算法

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

    圖3 模型偽代碼

    2.2 自動(dòng)切換方案設(shè)計(jì)

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

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

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

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

    3 實(shí)驗(yàn)及分析

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

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

    3.1 自動(dòng)切換時(shí)效性測(cè)試

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

    表2 切換時(shí)效性測(cè)試結(jié)果

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

    3.2 自動(dòng)切換成功率測(cè)試

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

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

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

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

    4 結(jié) 論

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

    猜你喜歡
    自動(dòng)狀態(tài)數(shù)據(jù)庫(kù)
    自動(dòng)捕盜機(jī)
    狀態(tài)聯(lián)想
    基于STM32的自動(dòng)喂養(yǎng)機(jī)控制系統(tǒng)
    生命的另一種狀態(tài)
    數(shù)據(jù)庫(kù)
    關(guān)于自動(dòng)駕駛
    汽車博覽(2016年9期)2016-10-18 13:05:41
    數(shù)據(jù)庫(kù)
    熱圖
    家庭百事通(2016年3期)2016-03-14 08:07:17
    數(shù)據(jù)庫(kù)
    堅(jiān)持是成功前的狀態(tài)
    山東青年(2016年3期)2016-02-28 14:25:52
    苍梧县| 永善县| 古蔺县| 自治县| 南城县| 新疆| 龙门县| 连江县| 威信县| 南汇区| 建平县| 苏州市| 大名县| 长葛市| 兴和县| 大丰市| 时尚| 汉川市| 洛浦县| 浦东新区| 阿合奇县| 东兰县| 房产| 石台县| 汶川县| 阿瓦提县| 云南省| 若羌县| 清水河县| 九江市| 东山县| 齐齐哈尔市| 贡觉县| 六盘水市| 台北县| 清涧县| 盐津县| 和田市| 塔城市| 沅江市| 芜湖县|