本文将指导您如何使用StarRocks跨集群数据迁移工具,在源集群保持在线且业务服务不中断的状态下高效、安全地进行数据复制。该工具提供全量及增量同步功能,旨在为您提供一键式解决方案,实现源集群数据无缝迁移至目标集群,确保数据一致性的同时,最大限度减少对业务运营的影响。
适用场景
StarRocks跨集群数据迁移工具适用于以下迁移场景,包括:
自建StarRocks集群向Serverless StarRocks的升级迁移。
EMR on ECS(半托管)集群向Serverless StarRocks的升级迁移。
Serverless StarRocks实例间的数据迁移。
前提条件
使用限制
仅支持源集群为存算一体集群,目标集群类型无要求。
目标集群小版本必须为3.1.9、3.2.4及之后的版本。不支持向2.x系列版本的集群进行迁移。源集群版本无要求。
如果您的目标实例版本低于所需版本,建议您提交工单升级到合适的小版本。
暂不支持外表,视图和物化视图的数据迁移。
暂不支持迁移包含自增列AUTO_INCREMENT的数据表。
注意事项
数据迁移功能目前处于公测阶段。迁移完成后,请务必进行充分测试,验证数据的完整性和系统的正常运行,以确保业务不受影响。
在数据迁移阶段,您可以对目标集群中正在迁移的表进行查询操作,但禁止在目标集群对正在同步的表上执行写入和更改表数据,以及更改和删除数据表操作,以避免同步数据错乱。
如果数据迁移的目标集群为存算分离集群,在将数据迁移到存算分离集群之前,您需要先手动关闭目标集群的Compaction,迁移完成后尽快启用Compaction。
查看Compaction状态。
ADMIN SHOW FRONTEND CONFIG LIKE 'lake_compaction_max_tasks';
如果返回值为
0
,则表示Compaction关闭。在集群的FE配置文件
fe.conf
中加入以下设置,关闭Compaction。lake_compaction_max_tasks = 0
数据迁移完毕后,开启Compaction。
从FE配置文件
fe.conf
中移除lake_compaction_max_tasks
参数,然后重启集群以恢复Compaction功能。
迁移流程
步骤一:获取源集群或实例的迁移Token
在进行Serverless StarRocks实例间的数据迁移时,请提交工单获取待迁移实例所需的Token。
登录FE节点所在的服务器,执行以下命令获取集群Token。
curl -v http://<fe_host>:<fe_http_port>/check
其中,涉及参数如下:
fe_host
:集群FE的节点IP地址或FQDN。fe_http_port
:集群FE节点的HTTP端口。
返回信息如下所示。其中token
字段即为当前集群的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实例,并上传获取到的迁移工具,详情请参见连接实例和使用Workbench上传或下载文件。
配置迁移工具。
修改
starrocks-cluster-sync/conf/
目录下的sync.properties配置文件。参数
说明
one_time_run_mode
选择是否启用全量同步模式,默认值为false。启用后,系统将仅执行一次全量数据同步而不进行后续的增量数据更新,即每张表将只同步一次。
source_fe_host
源集群FE的IP地址或FQDN。
source_fe_query_port
源集群FE的查询端口(
query_port
)。source_cluster_user
用于登录源集群的用户名。
source_cluster_password
用于登录源集群的用户密码。
source_cluster_token
源集群的Token。获取方式请参见步骤一。
target_fe_host
目标集群FE的IP地址或FQDN。
target_fe_query_port
目标集群FE的查询端口(
query_port
)。target_cluster_user
用于登录目标集群的用户名。
target_cluster_password
用于登录目标集群的用户密码。
include_data_list
需要迁移的数据库和表,多个对象时使用逗号(
,
)分隔。例如,db1,db2.tbl2,db3
。该参数优先于exclude_data_list
生效。说明如果您需要迁移集群中所有数据库和表,则无须配置该项。
exclude_data_list
不需要迁移的数据库和表,多个对象时使用逗号(
,
)分隔。例如,db1,db2.tbl2,db3
。include_data_list
优先于该参数生效。说明如果您需要迁移集群中所有数据库和表,则无须配置该项。
target_cluster_storage_volume
当目标集群是存算分离集群时,用于指定待迁移的表所在的Storage Volume,默认为空,表示使用目标集群的默认存储卷。
步骤三:启动迁移工具
在ECS实例中执行以下命令,启动迁移工具,开始数据迁移。
./bin/start.sh
迁移工具将定期检查目标集群的数据状态,以确认其是否与源集群同步。如果发现目标集群数据版本落后,工具将自动启动新的数据迁移任务。
若源集群在迁移过程中不断有新数据加入,数据同步将持续进行直到目标集群的数据完全与源集群相匹配。
请注意,数据迁移进程并不会自动结束。您必须定期手动监测数据同步状态,并在确认数据迁移完全完成之后主动停止迁移工具。
步骤四:查看迁移进度
查看迁移工具日志
您可以通过迁移工具日志log/sync.INFO.log查看迁移进度,包括同步任务进度和同步表进度。
正在同步的表
搜索关键字
Running table detail
,会输出当前正在迁移的表名称。同步任务进度
搜索关键字
Sync job progress
,如果进度显示100%,则说明迁移完成。说明该进度只反映了本次同步检查的进度。由于源集群的数据可能会持续更新,同步工具会在接下来的检查周期中启动新的数据同步任务。因此,在下一周期的进度检查后,显示的进度百分比可能会下降,例如可能从100%减少到90%。
以下是与进度相关的参数详情。
参数
说明
total
此次数据迁移中的总作业数。
ddlPending
待执行的DDL作业数量。
ddlRunning
当前正在执行的DDL作业的数量,该参数值通常为0或1。
jobPending
待执行的数据同步作业数量。
sent
已发送但尚未开始的数据同步作业数量。
running
正在运行中的数据同步作业数量。
finished
已成功执行完毕的数据同步作业数量。
failed
执行失败的数据同步作业累积数量。通常,此数值可忽略,因为迁移过程中会周期性地重试失败的作业。
unknown
状态未知的作业数量。
同步表进度
搜索关键字
Sync table progress
,如果进度显示100%,则说明迁移完成。说明该进度反映了自同步工具启动运行后,至少有一次同步任务执行成功的表数量占配置的表总数量的占比,当配置的所有表至少同步成功过一次之后,该进度便为100%,且该值不会下降。若同步表进度为100%且同步任务进度为100%时,说明在该检查周期内,源集群和目标集群的数据完全一致;若同步表进度为100%且同步任务进度小于100%时,说明有部分表在同步增量数据。
以下是与进度相关的参数详情。
参数
说明
finishedTableRatio
至少有一次成功执行同步任务的数据表所占比例。
expiredTableRatio
数据表过期数据所占比例。
total table
此次数据迁移配置的数据表总数。
finished table
至少有一次同步任务执行成功过的数据表数量。
unfinished table
还未进行过数据同步的数据表数量。
unfinished detail
还未进行过数据同步的数据表名称列表。
联系我们
如果您在迁移过程中有任何疑问,请提交工单进行咨询。