從自建StarRocks集群向Serverless StarRocks的遷移方案
本文將介紹StarRocks遷移至EMR Serverless的整體解決方案及具體遷移步驟。該遷移方案僅供參考,您需要結(jié)合實際業(yè)務(wù)情況進行調(diào)整與優(yōu)化,以更好地滿足您的需求。
遷移流程
整體遷移流程如下圖所示,涵蓋了作業(yè)改寫、作業(yè)雙跑、數(shù)據(jù)校驗、業(yè)務(wù)校驗以及割接等多個步驟。
前期評估
確認當(dāng)前集群情況
請確認當(dāng)前集群的基本情況,包括集群的版本,F(xiàn)E規(guī)格和數(shù)量,BE規(guī)格和數(shù)量,以及負載等信息。
集群信息 | 集群信息 | 配置示例 |
FE配置 | 機型配置 | 通用型ecs.g7.4xlarge 16 Core 64 GB 系統(tǒng)盤:ESSD PL1 云盤 100 GB * 1塊 數(shù)據(jù)盤:ESSD PL1 云盤 100 GB * 1塊 |
節(jié)點數(shù)量 | 3臺 | |
BE配置 | 機型配置 | 通用型ecs.g7.4xlarge 16 Core 64 GB 系統(tǒng)盤:ESSD PL1 云盤 100 GB * 1塊 數(shù)據(jù)盤:ESSD PL1 云盤 1000 GB * 4塊 |
節(jié)點數(shù)量 | 3臺 | |
StarRocks版本號 | - | 例如:2.5.13 |
集群負載 | CPU負載 | 高峰:82.9% 低峰:50.3% |
MEM負載 | 高峰:82.9% 低峰:50.3% | |
磁盤IOPS負載 | 高峰:10504 低峰:1003 | |
磁盤IO負載 | 高峰:514 MB/s 低峰:15 MB/s |
確認業(yè)務(wù)使用情況
以下信息僅為配置示例,實際應(yīng)用時需根據(jù)具體情況調(diào)整。
數(shù)據(jù)導(dǎo)入方式
數(shù)據(jù)導(dǎo)入方式
數(shù)據(jù)寫入分類
每日數(shù)據(jù)增量
每日新行數(shù)
任務(wù)數(shù)
實時寫入(Flink)
實時數(shù)據(jù)
10 GB
1 億行
80
Kafka + Routine
實時數(shù)據(jù)
10 GB
1 億行
20
離線導(dǎo)入(Spark Connector、DataX)
離線數(shù)據(jù)
10 GB
1 億行
120
物化視圖使用情況
物化視圖
任務(wù)數(shù)
同步頻率
同步物化視圖
12個
無
異步物化視圖
89個
大部分為每小時更新
Insert Overwrite
120個
大部分為每半小時更新
確認業(yè)務(wù)能夠接受的停服時間
為了確保業(yè)務(wù)連續(xù)性,必須提前評估業(yè)務(wù)能夠接受的停服時間。整個遷移的停服時間取決于具體方案,通常在30分鐘至半天左右不等。因此,務(wù)必提前與業(yè)務(wù)方進行充分溝通,明確預(yù)期停服時間。
新建目標(biāo)集群
建議目標(biāo)集群與源集群的配置盡量保持一致,待業(yè)務(wù)文檔運行后再根據(jù)負載情況靈活進行擴縮容。
根據(jù)您的業(yè)務(wù)需求,選擇適當(dāng)?shù)膶嵗愋蛣?chuàng)建Serverless StarRocks實例。您也可以通過釘釘群24010016636聯(lián)系我們進行評估。參考文檔如下:
數(shù)據(jù)遷移
1、安裝遷移工具
該工具基于兩個集群的元數(shù)據(jù)以及文件元數(shù)據(jù)對比,會定期將源集群的元數(shù)據(jù)以及數(shù)據(jù)增量同步到目標(biāo)集群中。它作為遷移過程的一環(huán),主要解決存量數(shù)據(jù)同步,元數(shù)據(jù)同步以及離線部分增量數(shù)據(jù)更新。
遷移工具的使用限制、安裝、使用等信息,請參見StarRocks跨集群數(shù)據(jù)遷移工具。
遷移工具速率說明:
參考經(jīng)驗值:約1 TB/小時。
具體遷移速率受以下因素影響:同步的庫表數(shù)量、表數(shù)據(jù)量、表分區(qū)數(shù)量以及桶的數(shù)量。對于單表來說,tablet數(shù)量越多,遷移速率會越慢。
遠距離跨地域或跨VPC的遷移速率主要受網(wǎng)絡(luò)穩(wěn)定性影響。遷移過程中需要在兩個集群之間建立大量連接,若網(wǎng)絡(luò)不穩(wěn)定或速率較慢,遷移速率也會受到顯著影響。
遷移工具測試:在完成安裝并正確配置了源集群與目標(biāo)集群的詳細信息后,進行工具的功能驗證,確保其能夠順暢運作。
2、表結(jié)構(gòu)&存量數(shù)據(jù)同步
通過上述遷移工具可以實現(xiàn)表結(jié)構(gòu)以及存量數(shù)據(jù)的同步。您可以參考遷移工具的速率,同時結(jié)合實際測試情況來合理評估同步時間。通過配置遷移工具的以下2個參數(shù),可以合理控制期望同步的表和數(shù)據(jù)的范圍。
如果您需要遷移集群中所有數(shù)據(jù)庫和表,則無須配置以下參數(shù)。
參數(shù) | 說明 |
include_data_list | 需要遷移的數(shù)據(jù)庫和表,多個對象時使用逗號( |
exclude_data_list | 不需要遷移的數(shù)據(jù)庫和表,多個對象時使用逗號( |
3、實時任務(wù)遷移
如果您正在執(zhí)行Flink或Kafka的實時寫入任務(wù),建議進行雙寫配置,以便同時將數(shù)據(jù)寫入目標(biāo)集群和源集群,從而確保數(shù)據(jù)一致性。
停止遷移工具:首先,停止當(dāng)前的遷移工具,并調(diào)整配置,以排除對正在實時更新的表數(shù)據(jù)的同步??赏ㄟ^
exclude_data_list
參數(shù)進行控制。Flink作業(yè):在Flink作業(yè)的平臺上,復(fù)制現(xiàn)有任務(wù),并修改數(shù)據(jù)源配置,指向目標(biāo)集群。
Stream Load作業(yè):在目標(biāo)集群中手動創(chuàng)建相應(yīng)的Stream Load作業(yè),以實現(xiàn)對Kafka數(shù)據(jù)的雙寫同步。
在業(yè)務(wù)數(shù)據(jù)導(dǎo)入時,通常會有明確的offset或時間戳標(biāo)識。例如,若同步任務(wù)于13:00啟動并于13:30結(jié)束,目標(biāo)集群表中至少應(yīng)包含13:00之前的數(shù)據(jù)。同步任務(wù)結(jié)束后,可以將雙寫的Flink或Kafka任務(wù)設(shè)置到13:00之前的offset,以便完成遷移窗口期的數(shù)據(jù)追平工作。
4、離線任務(wù)遷移
離線任務(wù)啟動:去掉實時更新的相關(guān)表后,繼續(xù)啟動離線任務(wù),保持對離線更新數(shù)據(jù)的持續(xù)同步。
離線任務(wù)復(fù)制:復(fù)制離線任務(wù)實現(xiàn)對目標(biāo)集群的更新,但在割接階段之前暫時不啟動相關(guān)任務(wù)。
確保提交離線任務(wù)的機器與目標(biāo)集群之間的網(wǎng)絡(luò)連接穩(wěn)定,避免因網(wǎng)絡(luò)問題導(dǎo)致任務(wù)失敗。
選擇1~2個任務(wù)進行驗證,以確認離線任務(wù)流程的準(zhǔn)確性和順暢性。
5、(可選)物化視圖遷移
請參考以下社區(qū)命令,以獲取相關(guān)的物化視圖或普通視圖的定義。然后,在目標(biāo)集群中逐個創(chuàng)建相應(yīng)的視圖。
6、(可選)外表遷移
3.x及之后版本,建議使用Catalog對StarRocks的外表進行統(tǒng)一管理。更多Catalog信息,請參見Catalog概述。
如果需要獲取源表的DDL,可以通過SHOW CREATE TABLE命令,但不推薦在新集群中采用這種方式進行外表管理,建議優(yōu)先使用Catalog。
根據(jù)您的具體需求,選擇合適的方法在目標(biāo)集群中創(chuàng)建外表,并測試外表功能是否正常。
7、(可選)UDF遷移
請參考SHOW FUNCTIONS命令,獲取相關(guān)FUNCTION內(nèi)容,并在目標(biāo)集群中逐個創(chuàng)建相應(yīng)的UDF。
在EMR Serverless StarRocks中,您的JAR等文件應(yīng)存儲在阿里云OSS中,使用以oss:
為前綴的文件路徑進行替換。
數(shù)據(jù)校驗
1、數(shù)據(jù)一致性校驗
數(shù)據(jù)一致性校驗主要目的是驗證同步數(shù)據(jù)的準(zhǔn)確性,通過對源表與目標(biāo)集群進行比較??梢詮囊韵聨讉€維度進行檢查:
庫或表數(shù)量對比
表記錄數(shù)對比
每行記錄的匯總或去重計數(shù)對比
如果源表與目標(biāo)表存在輕微差異,可能是由于同步工具存在延遲導(dǎo)致的。建議結(jié)合業(yè)務(wù)場景,添加合適的時間戳,以進行更精準(zhǔn)的校驗。
2、下游業(yè)務(wù)校驗
下游業(yè)務(wù)校驗主要從業(yè)務(wù)角度出發(fā),對結(jié)果進行驗證,以確保源表、物化視圖及其他預(yù)處理數(shù)據(jù)的正確性。具體校驗方式如下:
有下游測試系統(tǒng):可切換數(shù)據(jù)源至目標(biāo)集群,從業(yè)務(wù)角度對查詢結(jié)果和報表數(shù)據(jù)進行驗證。
無下游測試系統(tǒng),可采取以下兩種方法:
業(yè)務(wù)SQL復(fù)現(xiàn):手動挑選關(guān)鍵業(yè)務(wù)SQL,執(zhí)行查詢并比對結(jié)果,以進行校驗。
生產(chǎn)環(huán)境驗證:利用業(yè)務(wù)系統(tǒng)進行驗證,此過程需與業(yè)務(wù)方提前協(xié)商,驗證完成后應(yīng)盡快切換回源集群。
如果業(yè)務(wù)結(jié)果數(shù)據(jù)存在輕微差異,建議結(jié)合業(yè)務(wù)場景,添加合適的時間戳,以進行更精準(zhǔn)的校驗。
3、性能驗證
性能驗證的關(guān)鍵在于復(fù)現(xiàn)實際生產(chǎn)業(yè)務(wù)的各種壓力,包括數(shù)據(jù)導(dǎo)入、業(yè)務(wù)查詢以及物化視圖的處理。同時,必須確保實時數(shù)據(jù)的雙跑、離線任務(wù)的同步處理以及物化視圖的正常運行,以模擬真實的生產(chǎn)環(huán)境。以下是需要驗證的要點:
集群負載:確保CPU、內(nèi)存、磁盤IO、IOPS及磁盤利用率等各項指標(biāo)均在預(yù)期范圍內(nèi)。
業(yè)務(wù)查詢:驗證業(yè)務(wù)查詢的響應(yīng)時間,確保其在業(yè)務(wù)需求的合理范圍內(nèi)。
數(shù)據(jù)導(dǎo)入:檢查數(shù)據(jù)導(dǎo)入的延遲情況,確保其在業(yè)務(wù)需求的合理范圍內(nèi)。
業(yè)務(wù)割接
1、確認停服時間
由于業(yè)務(wù)割接將導(dǎo)致短暫停服,我們需要提前評估停服時間,并與業(yè)務(wù)方確認。建議在業(yè)務(wù)低峰期進行停服,以最小化對業(yè)務(wù)的影響。
通常情況下,割接的中斷時間主要集中在第五步(即業(yè)務(wù)系統(tǒng)切換至目標(biāo)集群)。此步驟預(yù)計耗時較短,預(yù)計30分鐘至1小時。具體時間會根據(jù)項目情況進行實際評估。
2、終止源集群的離線數(shù)據(jù)同步
為確保割接時目標(biāo)集群能夠追平源集群的數(shù)據(jù),請在割接前停止離線同步任務(wù)。這意味著需要選擇適當(dāng)?shù)母麻g隔期,并停止新數(shù)據(jù)的寫入,確保源集群不再增加新的離線數(shù)據(jù)。
3、遷移工具持續(xù)同步,直至追平源集群
遷移工具將保持實時同步狀態(tài),直至與源集群數(shù)據(jù)完全一致。
觀察時間至少10分鐘,若此期間無新數(shù)據(jù)同步,則算追平源集群。
請確認所有離線寫入任務(wù)已終止,避免遷移工具因持續(xù)更新而無法追平。
4、離線同步任務(wù)寫入目標(biāo)集群
在之前的遷移步驟中,已配置好離線任務(wù)寫入目標(biāo)集群。本步驟僅需啟動這些任務(wù),并觀察其運行情況,重點校驗:
同步任務(wù)是否正常運行。
目標(biāo)集群的數(shù)據(jù)是否正常更新。
請確保同步任務(wù)的開始周期與原停止周期能夠無縫對接。例如,如果上次停止更新的時間為2024年02月01日 00:00,則新任務(wù)應(yīng)從該時間點的下一個周期啟動。
5、業(yè)務(wù)系統(tǒng)切換為目標(biāo)集群
將下游使用StarRocks的業(yè)務(wù)系統(tǒng)數(shù)據(jù)源配置切換為目標(biāo)集群的配置,并驗證業(yè)務(wù)系統(tǒng)的查詢功能,確保查詢耗時符合預(yù)期。
若業(yè)務(wù)系統(tǒng)需要進行大量配置修改,建議提前準(zhǔn)備修改腳本,以縮短配置修改時間。
6、割接驗證
割接后,對業(yè)務(wù)系統(tǒng)進行驗證,主要從下游進行檢驗,驗證項包括:
業(yè)務(wù)系統(tǒng)查詢結(jié)果是否正確。
業(yè)務(wù)系統(tǒng)查詢耗時是否符合預(yù)期。
如驗證中發(fā)現(xiàn)問題,請參考回滾方案。
7、終止實時雙跑任務(wù)
驗證通過后,可以停止源集群的實時寫入任務(wù),正式完成割接。
回滾方案
如果割接后驗證存在問題,請首先聯(lián)系阿里云EMR團隊協(xié)同解決相關(guān)問題。如果問題無法解決,再考慮回滾方案?;貪L流程如下:
保持實時任務(wù)雙跑,避免執(zhí)行數(shù)據(jù)校驗階段的第7步操作(即終止實時雙跑任務(wù))。
將業(yè)務(wù)系統(tǒng)切換回源集群地址,驗證業(yè)務(wù)系統(tǒng)是否正常運行。
從上次停止的周期開始,恢復(fù)離線任務(wù)對源集群的寫入。
停止向目標(biāo)集群寫入離線數(shù)據(jù)。
常見問題
盡管遷移工具已支持了Schema Change,但是Schema Change后,工具會對該表進行全量同步,會大幅增加同步所需的時間。具體的時間影響需結(jié)合表的數(shù)據(jù)量進行評估。
遷移時間通常在1至4周之間,具體時長需根據(jù)您的實際業(yè)務(wù)情況進行評估。主要耗時環(huán)節(jié)包括實時任務(wù)雙跑、離線任務(wù)復(fù)制以及業(yè)務(wù)驗證。如果您的調(diào)度工具平臺支持快速任務(wù)復(fù)制,可顯著縮短遷移時間。