我們做遷移的目的是為了進(jìn)行業(yè)務(wù)遷移,在進(jìn)行數(shù)據(jù)遷移時(shí),企業(yè)最怕的就是影響業(yè)務(wù)正常運(yùn)作,進(jìn)而影響到用戶的正常使用,從這個(gè)角度出發(fā),遷移至少要滿足三個(gè)正確性才能進(jìn)行業(yè)務(wù)的切換。
首先,我們應(yīng)該保證函數(shù)、觸發(fā)器、表結(jié)構(gòu)、索引等全部 Database 對(duì)象能夠完整地遷移到目標(biāo)庫(kù),并且確保對(duì)象的運(yùn)行邏輯和源庫(kù)的一致性;其次,在數(shù)據(jù)遷移中,如果業(yè)務(wù)對(duì)停機(jī)時(shí)間窗口有要求,還要考慮全量+增量的在線遷移,保證業(yè)務(wù)不中斷,同時(shí)對(duì)同步數(shù)據(jù)進(jìn)行校驗(yàn),保證數(shù)據(jù)遷移的準(zhǔn)確性;最后,當(dāng)對(duì)象和數(shù)據(jù)全部遷移成功后,要使用工具測(cè)試遷移后業(yè)務(wù)運(yùn)行的正確性,一是確保業(yè)務(wù)在目標(biāo)庫(kù)的運(yùn)行結(jié)果正確,二是確保目標(biāo)庫(kù)性能能夠支撐住業(yè)務(wù)的負(fù)載。
以從 OpenTSDB 遷移至 TDengine 為例,我們首先需要將基于 OpenTSDB 的系統(tǒng)進(jìn)行遷移涉及到的數(shù)據(jù)模式設(shè)計(jì)、系統(tǒng)規(guī)模估算、數(shù)據(jù)寫(xiě)入端改造,進(jìn)行數(shù)據(jù)分流、應(yīng)用適配工作;之后將兩個(gè)系統(tǒng)并行運(yùn)行一段時(shí)間,再將歷史數(shù)據(jù)遷移到 TDengine 中。當(dāng)然如果你的應(yīng)用中有部分功能強(qiáng)依賴于上述 OpenTSDB 特性,同時(shí)又不希望停止使用,可以考慮保持原有的 OpenTSDB 系統(tǒng)運(yùn)行,同時(shí)啟動(dòng) TDengine 來(lái)提供主要的服務(wù)。
在具體操作上,你可以使用 TDengine 的官方遷移工具 taosAdapter 來(lái)幫助完成遷移,無(wú)需編寫(xiě)一行代碼,就可以將基于 OpenTSDB 的應(yīng)用快速、安全、可靠地遷移到 TDengine之上,顯著降低遷移成本。
而從企業(yè)具體實(shí)踐角度來(lái)說(shuō),睿信物聯(lián)網(wǎng)制定的遷移方案也可以借鑒。為了能夠平滑順利地完成升級(jí)上線,不影響用戶正常使用,睿信物聯(lián)網(wǎng)將升級(jí)上線分為數(shù)據(jù)遷移、試運(yùn)行、正式上線三階段完成。
在數(shù)據(jù)遷移階段,OpenTSDB 和 TDengine 并行運(yùn)行,數(shù)據(jù)同時(shí)向兩個(gè) Database 寫(xiě)入,在此階段,由于 OpenTSDB 有全量數(shù)據(jù),查詢請(qǐng)求全部交給它,同時(shí)啟動(dòng)數(shù)據(jù)遷移工具,將歷史數(shù)據(jù)遷移到TDengine,待數(shù)據(jù)遷移完成,進(jìn)入到試運(yùn)行階段,此時(shí) TDengine 已經(jīng)具備全量數(shù)據(jù),查詢請(qǐng)求全部切換到其上,觀察兩周左右時(shí)間沒(méi)有問(wèn)題就進(jìn)入正式上線階段,此時(shí) OpenTSDB 停止運(yùn)行,占用資源全部回收。
考慮到業(yè)務(wù)的快速長(zhǎng)久發(fā)展,正確選擇數(shù)據(jù)庫(kù)至關(guān)重要。如果當(dāng)前業(yè)務(wù)進(jìn)度被數(shù)據(jù)庫(kù)方案掣肘,企業(yè)能做的就是及時(shí)止損,盡快調(diào)研合適的數(shù)據(jù)庫(kù)進(jìn)行遷移,以保證業(yè)務(wù)的可持續(xù)發(fā)展。相信閱讀完本篇文章你會(huì)解鎖從 OpenTSDB 做數(shù)據(jù)遷移的正確姿勢(shì)。



互聯(lián)網(wǎng).png)



-1.png)




.png)


證.png)


伙伴.png)
伙伴.png)
伙伴.png)



