掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
作為國內(nèi)領(lǐng)先的循環(huán)經(jīng)濟(jì)產(chǎn)業(yè)公司,隨著轉(zhuǎn)轉(zhuǎn)業(yè)務(wù)的不斷發(fā)展,基礎(chǔ)服務(wù)設(shè)施已然到了“蛻殼”的階段。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供婺城網(wǎng)站建設(shè)、婺城做網(wǎng)站、婺城網(wǎng)站設(shè)計(jì)、婺城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、婺城企業(yè)網(wǎng)站模板建站服務(wù),10年婺城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
目前在用的IDC資源已趨于飽和,難以滿足后續(xù)的發(fā)展需求。
同時,隨著騰訊云提供的負(fù)載均衡技術(shù)迭代,需要將TGW(Tencent GateWay)替換為CLB(Cloud Load Balancer)。
經(jīng)過運(yùn)維同學(xué)近半年時間的籌劃和建設(shè),全新IDC和負(fù)載均衡技術(shù)(CLB)已完成升級建設(shè)并正式投產(chǎn),MySQL、TiDB、Redis等公共基礎(chǔ)服務(wù)需要有序進(jìn)行遷移切換。對于MySQL遷移工作,面臨集群數(shù)量多、操作影響大、操作要求高等一系列難題,需要充分調(diào)研現(xiàn)狀并制定合理的方案,進(jìn)一步降低對業(yè)務(wù)服務(wù)的感知。
通過備份擴(kuò)容出足夠數(shù)量的從庫,再依賴MHA(Master High Availability)系統(tǒng)發(fā)起主動切換,最終下線舊節(jié)點(diǎn)完成集群拓?fù)渥兏?/p>
通過備份搭建級聯(lián)集群,完成新集群數(shù)據(jù)同步,再通過斷級聯(lián)+域名切換的方式完成集群變更。
落地方案的選定,重點(diǎn)考慮對業(yè)務(wù)的影響,哪種方案又快又穩(wěn)對業(yè)務(wù)感知又小就選哪種,毫無疑問,方案二勝出。級聯(lián)方案還有一個明顯優(yōu)勢,新集群搭建過程中可以平滑升級負(fù)載均衡(CLB替換TGW)
MySQL集群遷移切換的風(fēng)險(xiǎn)非常大,稍加操作不當(dāng)就可導(dǎo)致整套集群不可用,極端情況下可能直接讓線上服務(wù)停擺。轉(zhuǎn)轉(zhuǎn)線上MySQL集群數(shù)量較多,如何又快又穩(wěn)完成MySQL機(jī)房遷移工作?
通過備份擴(kuò)容新集群,并與老集群建立級聯(lián)關(guān)系,提前搭建好所有待遷移集群級聯(lián)。由于轉(zhuǎn)轉(zhuǎn)采用單機(jī)多實(shí)例部署的架構(gòu),新建集群時得重點(diǎn)考慮混合部署帶來的問題,需要提前整理各集群單實(shí)例磁盤、內(nèi)存占用數(shù)據(jù)。在開發(fā)自動搭建級聯(lián)集群腳本時,需要同時兼顧機(jī)器負(fù)載均衡和資源成本。
限制邏輯:
級聯(lián)搭建過程:
核心集群間的上下游關(guān)系錯綜復(fù)雜,尤其是交易庫和商品庫。如果停寫一套集群,其他好幾套關(guān)聯(lián)集群也會受影響。另外,盡管當(dāng)前部分業(yè)務(wù)方具備雙寫能力,能夠應(yīng)對切換停寫帶來的影響,但集群數(shù)量太多,并非所有業(yè)務(wù)都有足夠人力成本投入額外開發(fā)。綜合考慮,與其花費(fèi)大量人工成本去梳理上下游關(guān)系和額外開發(fā),不如在凌晨低峰期短暫停服,批量切換核心集群。這項(xiàng)決定意味著我們需要具備過硬的批量操作和恢復(fù)能力,務(wù)必將操作時間進(jìn)一步縮短,給測試、開發(fā)留足驗(yàn)證時間,盡量減少停服時長。
整個遷移周期內(nèi)存在大量操作,需要降低人工誤操作風(fēng)險(xiǎn),同時對操作時間也有一定要求,因此,所有操作都需要實(shí)現(xiàn)自動化。對于關(guān)鍵步驟應(yīng)當(dāng)解耦處理,自動化模塊需要能夠獨(dú)立運(yùn)行,所有模塊相互間形成閉環(huán),當(dāng)切換存在問題時能快速定位故障發(fā)生位置,及時回滾。在閉環(huán)中實(shí)現(xiàn):
我們將線上集群分為3個等級,由高到低依次為P1、P2、P3,各等級占比約為1:1:1
我們正不斷推進(jìn)和完善集群服務(wù)分級管理,對于達(dá)到一定規(guī)模符合等級要求的集群,我們將投入更多精力、提供更多的資源去支撐高等級集群的可靠性及性能。
整個切換周期內(nèi),新、老集群的前、后置檢查必不可少。切換前后配置不一致可能引發(fā)故障,尤其是一些關(guān)鍵參數(shù)配置。
前置檢查:
后置檢查:
完成各項(xiàng)自動化代碼開發(fā)后,先通過測試集群進(jìn)行多輪批量切換驗(yàn)證,隨后按照集群等級開始線上集群切換。對于P3集群,由于切換操作對業(yè)務(wù)的影響較小,但又不同于測試集群,P3切換過程中能夠反饋線上大部分集群可能遇到的問題。采用灰度切換驗(yàn)證,摸著石頭過河,把意料之外的渾水都淌一遍,不斷迭代自動化腳本。
灰度切換順序:
灰度切換驗(yàn)證期間遇到的問題:
按標(biāo)準(zhǔn)化運(yùn)維,同一集群同一角色有且僅有一個域名,但線上集群存在一套集群使用多個主庫、從庫域名的情況。在流量切換時,需要兼容處理多域名問題
部分老集群元數(shù)據(jù)長時間未維護(hù),實(shí)例信息、域名指向信息可能有誤。在遷移切換前,需要花精力去校對最新數(shù)據(jù)
轉(zhuǎn)轉(zhuǎn)線上MySQL集群規(guī)模400+,需要在9月27日凌晨停服期間完成所有集群切換。P3、P2集群在停服前已完成批量切換,剩余P1核心集群累計(jì)100+,平均耗時10s/套,半小時內(nèi)結(jié)束戰(zhàn)斗。停服期間因前期已規(guī)避大部分問題,切換過程非常流暢,后續(xù)的驗(yàn)證、壓測也均符合預(yù)期。
關(guān)于作者
黃建波,轉(zhuǎn)轉(zhuǎn)DBA。主要負(fù)責(zé)轉(zhuǎn)轉(zhuǎn)MySQL運(yùn)維及數(shù)據(jù)庫平臺開發(fā)。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流