StarRocks跨集群數(shù)據(jù)遷移工具
本文將指導(dǎo)您如何使用StarRocks跨集群數(shù)據(jù)遷移工具,在源集群保持在線且業(yè)務(wù)服務(wù)不中斷的狀態(tài)下高效、安全地進(jìn)行數(shù)據(jù)復(fù)制。該工具提供全量及增量同步功能,旨在為您提供一鍵式解決方案,實(shí)現(xiàn)源集群數(shù)據(jù)無縫遷移至目標(biāo)集群,確保數(shù)據(jù)一致性的同時(shí),最大限度減少對(duì)業(yè)務(wù)運(yùn)營的影響。
適用場景
StarRocks跨集群數(shù)據(jù)遷移工具適用于以下遷移場景,包括:
自建StarRocks集群向Serverless StarRocks的升級(jí)遷移。
EMR on ECS(半托管)集群向Serverless StarRocks的升級(jí)遷移。
Serverless StarRocks實(shí)例間的數(shù)據(jù)遷移。
前提條件
在進(jìn)行遷移之前,請(qǐng)提交工單。申請(qǐng)開啟EMR Serverless StarRocks的遷移功能,并獲取遷移工具。
需要購買單獨(dú)的ECS實(shí)例部署遷移工具,且部署遷移工具的ECS實(shí)例和源集群、目標(biāo)集群的網(wǎng)絡(luò)互通,具體網(wǎng)絡(luò)交互和使用端口如下圖所示。
在ECS控制臺(tái)創(chuàng)建實(shí)例,詳情請(qǐng)參見自定義購買實(shí)例。
使用限制
僅支持源集群為存算一體集群,目標(biāo)集群類型無要求。
目標(biāo)集群小版本必須為3.1.9、3.2.4及之后的版本。不支持向2.x系列版本的集群進(jìn)行遷移。源集群版本無要求。
如果您的目標(biāo)實(shí)例版本低于所需版本,建議您提交工單升級(jí)到合適的小版本。
暫不支持外表,視圖和物化視圖的數(shù)據(jù)遷移。
暫不支持遷移包含自增列AUTO_INCREMENT的數(shù)據(jù)表。
注意事項(xiàng)
數(shù)據(jù)遷移功能目前處于公測階段。遷移完成后,請(qǐng)務(wù)必進(jìn)行充分測試,驗(yàn)證數(shù)據(jù)的完整性和系統(tǒng)的正常運(yùn)行,以確保業(yè)務(wù)不受影響。
在數(shù)據(jù)遷移階段,您可以對(duì)目標(biāo)集群中正在遷移的表進(jìn)行查詢操作,但禁止在目標(biāo)集群對(duì)正在同步的表上執(zhí)行寫入和更改表數(shù)據(jù),以及更改和刪除數(shù)據(jù)表操作,以避免同步數(shù)據(jù)錯(cuò)亂。
如果數(shù)據(jù)遷移的目標(biāo)集群為存算分離集群,在將數(shù)據(jù)遷移到存算分離集群之前,您需要先手動(dòng)關(guān)閉目標(biāo)集群的Compaction,遷移完成后盡快啟用Compaction。
查看Compaction狀態(tài)。
ADMIN SHOW FRONTEND CONFIG LIKE 'lake_compaction_max_tasks';
如果返回值為
0
,則表示Compaction關(guān)閉。在集群的FE配置文件
fe.conf
中加入以下設(shè)置,關(guān)閉Compaction。lake_compaction_max_tasks = 0
數(shù)據(jù)遷移完畢后,開啟Compaction。
從FE配置文件
fe.conf
中移除lake_compaction_max_tasks
參數(shù),然后重啟集群以恢復(fù)Compaction功能。
遷移流程
步驟一:獲取源集群或?qū)嵗倪w移Token
在進(jìn)行Serverless StarRocks實(shí)例間的數(shù)據(jù)遷移時(shí),請(qǐng)提交工單獲取待遷移實(shí)例所需的Token。
登錄FE節(jié)點(diǎn)所在的服務(wù)器,執(zhí)行以下命令獲取集群Token。
curl -v http://<fe_host>:<fe_http_port>/check
其中,涉及參數(shù)如下:
fe_host
:集群FE的節(jié)點(diǎn)IP地址或FQDN。fe_http_port
:集群FE節(jié)點(diǎn)的HTTP端口。
返回信息如下所示。其中token
字段即為當(dāng)前集群的Token。
* About to connect() to xxx.xx.xxx.xx port 8030 (#0)* Trying xxx.xx.xxx.xx...* Connected to xxx.xx.xxx.xx (xxx.xx.xxx.xx) port 8030 (#0)> GET /check HTTP/1.1> User-Agent: curl/7.29.0> Host: xxx.xx.xxx.xx:8030> Accept: */*> < HTTP/1.1 200 OK< content-length: 0< cluster_id: yyyyyyyyyyy< content-type: text/html< token: wwwwwwww-xxxx-yyyy-zzzz-uuuuuuuuuu< connection: keep-alive< * Connection #0 to host xxx.xx.xxx.xx left intact
步驟二:配置遷移工具
連接ECS實(shí)例,并上傳獲取到的遷移工具,詳情請(qǐng)參見連接實(shí)例和使用Workbench上傳或下載文件。
配置遷移工具。
修改
starrocks-cluster-sync/conf/
目錄下的sync.properties配置文件。參數(shù)
說明
one_time_run_mode
選擇是否啟用全量同步模式,默認(rèn)值為false。啟用后,系統(tǒng)將僅執(zhí)行一次全量數(shù)據(jù)同步而不進(jìn)行后續(xù)的增量數(shù)據(jù)更新,即每張表將只同步一次。
source_fe_host
源集群FE的IP地址或FQDN。
source_fe_query_port
源集群FE的查詢端口(
query_port
)。source_cluster_user
用于登錄源集群的用戶名。
source_cluster_password
用于登錄源集群的用戶密碼。
source_cluster_token
源集群的Token。獲取方式請(qǐng)參見步驟一。
target_fe_host
目標(biāo)集群FE的IP地址或FQDN。
target_fe_query_port
目標(biāo)集群FE的查詢端口(
query_port
)。target_cluster_user
用于登錄目標(biāo)集群的用戶名。
target_cluster_password
用于登錄目標(biāo)集群的用戶密碼。
include_data_list
需要遷移的數(shù)據(jù)庫和表,多個(gè)對(duì)象時(shí)使用逗號(hào)(
,
)分隔。例如,db1,db2.tbl2,db3
。該參數(shù)優(yōu)先于exclude_data_list
生效。說明如果您需要遷移集群中所有數(shù)據(jù)庫和表,則無須配置該項(xiàng)。
exclude_data_list
不需要遷移的數(shù)據(jù)庫和表,多個(gè)對(duì)象時(shí)使用逗號(hào)(
,
)分隔。例如,db1,db2.tbl2,db3
。include_data_list
優(yōu)先于該參數(shù)生效。說明如果您需要遷移集群中所有數(shù)據(jù)庫和表,則無須配置該項(xiàng)。
target_cluster_storage_volume
當(dāng)目標(biāo)集群是存算分離集群時(shí),用于指定待遷移的表所在的Storage Volume,默認(rèn)為空,表示使用目標(biāo)集群的默認(rèn)存儲(chǔ)卷。
步驟三:啟動(dòng)遷移工具
在ECS實(shí)例中執(zhí)行以下命令,啟動(dòng)遷移工具,開始數(shù)據(jù)遷移。
./bin/start.sh
遷移工具將定期檢查目標(biāo)集群的數(shù)據(jù)狀態(tài),以確認(rèn)其是否與源集群同步。如果發(fā)現(xiàn)目標(biāo)集群數(shù)據(jù)版本落后,工具將自動(dòng)啟動(dòng)新的數(shù)據(jù)遷移任務(wù)。
若源集群在遷移過程中不斷有新數(shù)據(jù)加入,數(shù)據(jù)同步將持續(xù)進(jìn)行直到目標(biāo)集群的數(shù)據(jù)完全與源集群相匹配。
請(qǐng)注意,數(shù)據(jù)遷移進(jìn)程并不會(huì)自動(dòng)結(jié)束。您必須定期手動(dòng)監(jiān)測數(shù)據(jù)同步狀態(tài),并在確認(rèn)數(shù)據(jù)遷移完全完成之后主動(dòng)停止遷移工具。
步驟四:查看遷移進(jìn)度
查看遷移工具日志
您可以通過遷移工具日志log/sync.INFO.log查看遷移進(jìn)度,包括同步任務(wù)進(jìn)度和同步表進(jìn)度。
正在同步的表
搜索關(guān)鍵字
Running table detail
,會(huì)輸出當(dāng)前正在遷移的表名稱。同步任務(wù)進(jìn)度
搜索關(guān)鍵字
Sync job progress
,如果進(jìn)度顯示100%,則說明遷移完成。說明該進(jìn)度只反映了本次同步檢查的進(jìn)度。由于源集群的數(shù)據(jù)可能會(huì)持續(xù)更新,同步工具會(huì)在接下來的檢查周期中啟動(dòng)新的數(shù)據(jù)同步任務(wù)。因此,在下一周期的進(jìn)度檢查后,顯示的進(jìn)度百分比可能會(huì)下降,例如可能從100%減少到90%。
以下是與進(jìn)度相關(guān)的參數(shù)詳情。
參數(shù)
說明
total
此次數(shù)據(jù)遷移中的總作業(yè)數(shù)。
ddlPending
待執(zhí)行的DDL作業(yè)數(shù)量。
ddlRunning
當(dāng)前正在執(zhí)行的DDL作業(yè)的數(shù)量,該參數(shù)值通常為0或1。
jobPending
待執(zhí)行的數(shù)據(jù)同步作業(yè)數(shù)量。
sent
已發(fā)送但尚未開始的數(shù)據(jù)同步作業(yè)數(shù)量。
running
正在運(yùn)行中的數(shù)據(jù)同步作業(yè)數(shù)量。
finished
已成功執(zhí)行完畢的數(shù)據(jù)同步作業(yè)數(shù)量。
failed
執(zhí)行失敗的數(shù)據(jù)同步作業(yè)累積數(shù)量。通常,此數(shù)值可忽略,因?yàn)檫w移過程中會(huì)周期性地重試失敗的作業(yè)。
unknown
狀態(tài)未知的作業(yè)數(shù)量。
同步表進(jìn)度
搜索關(guān)鍵字
Sync table progress
,如果進(jìn)度顯示100%,則說明遷移完成。說明該進(jìn)度反映了自同步工具啟動(dòng)運(yùn)行后,至少有一次同步任務(wù)執(zhí)行成功的表數(shù)量占配置的表總數(shù)量的占比,當(dāng)配置的所有表至少同步成功過一次之后,該進(jìn)度便為100%,且該值不會(huì)下降。若同步表進(jìn)度為100%且同步任務(wù)進(jìn)度為100%時(shí),說明在該檢查周期內(nèi),源集群和目標(biāo)集群的數(shù)據(jù)完全一致;若同步表進(jìn)度為100%且同步任務(wù)進(jìn)度小于100%時(shí),說明有部分表在同步增量數(shù)據(jù)。
以下是與進(jìn)度相關(guān)的參數(shù)詳情。
參數(shù)
說明
finishedTableRatio
至少有一次成功執(zhí)行同步任務(wù)的數(shù)據(jù)表所占比例。
expiredTableRatio
數(shù)據(jù)表過期數(shù)據(jù)所占比例。
total table
此次數(shù)據(jù)遷移配置的數(shù)據(jù)表總數(shù)。
finished table
至少有一次同步任務(wù)執(zhí)行成功過的數(shù)據(jù)表數(shù)量。
unfinished table
還未進(jìn)行過數(shù)據(jù)同步的數(shù)據(jù)表數(shù)量。
unfinished detail
還未進(jìn)行過數(shù)據(jù)同步的數(shù)據(jù)表名稱列表。
聯(lián)系我們
如果您在遷移過程中有任何疑問,請(qǐng)提交工單進(jìn)行咨詢。