文档

StarRocks跨集群数据迁移工具

更新时间:

本文将指导您如何使用StarRocks跨集群数据迁移工具,在源集群保持在线且业务服务不中断的状态下高效、安全地进行数据复制。该工具提供全量及增量同步功能,旨在为您提供一键式解决方案,实现源集群数据无缝迁移至目标集群,确保数据一致性的同时,最大限度减少对业务运营的影响。

适用场景

StarRocks跨集群数据迁移工具适用于以下迁移场景,包括:

  • 自建StarRocks集群向Serverless StarRocks的升级迁移。

  • EMR on ECS(半托管)集群向Serverless StarRocks的升级迁移。

  • Serverless StarRocks实例间的数据迁移。

前提条件

  • 在进行迁移之前,请提交工单。申请开启EMR Serverless StarRocks的迁移功能,并获取迁移工具。

  • 需要购买单独的ECS实例部署迁移工具,且部署迁移工具的ECS实例和源集群、目标集群的网络互通,具体网络交互和使用端口如下图所示。

    在ECS控制台创建实例,详情请参见自定义购买实例

    image

使用限制

  • 仅支持源集群为存算一体集群,目标集群类型无要求。

  • 目标集群小版本必须为3.1.9、3.2.4及之后的版本。不支持向2.x系列版本的集群进行迁移。源集群版本无要求。

    如果您的目标实例版本低于所需版本,建议您提交工单升级到合适的小版本。

  • 暂不支持外表,视图和物化视图的数据迁移。

  • 暂不支持迁移包含自增列AUTO_INCREMENT的数据表。

注意事项

  • 数据迁移功能目前处于公测阶段。迁移完成后,请务必进行充分测试,验证数据的完整性和系统的正常运行,以确保业务不受影响。

  • 在数据迁移阶段,您可以对目标集群中正在迁移的表进行查询操作,但禁止在目标集群对正在同步的表上执行写入和更改表数据,以及更改和删除数据表操作,以避免同步数据错乱。

  • 如果数据迁移的目标集群为存算分离集群,在将数据迁移到存算分离集群之前,您需要先手动关闭目标集群的Compaction,迁移完成后尽快启用Compaction。

    1. 查看Compaction状态。

      ADMIN SHOW FRONTEND CONFIG LIKE 'lake_compaction_max_tasks';

      如果返回值为 0,则表示Compaction关闭。

    2. 在集群的FE配置文件fe.conf中加入以下设置,关闭Compaction。

      lake_compaction_max_tasks = 0
    3. 数据迁移完毕后,开启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

步骤:配置迁移工具

  1. 连接ECS实例,并上传获取到的迁移工具,详情请参见连接实例使用Workbench上传或下载文件

  2. 配置迁移工具。

    修改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,db3include_data_list优先于该参数生效。

    说明

    如果您需要迁移集群中所有数据库和表,则无须配置该项。

    target_cluster_storage_volume

    当目标集群是存算分离集群时,用于指定待迁移的表所在的Storage Volume,默认为空,表示使用目标集群的默认存储卷。

步骤三:启动迁移工具

在ECS实例中执行以下命令,启动迁移工具,开始数据迁移。

./bin/start.sh
说明
  • 迁移工具将定期检查目标集群的数据状态,以确认其是否与源集群同步。如果发现目标集群数据版本落后,工具将自动启动新的数据迁移任务。

  • 若源集群在迁移过程中不断有新数据加入,数据同步将持续进行直到目标集群的数据完全与源集群相匹配。

  • 请注意,数据迁移进程并不会自动结束。您必须定期手动监测数据同步状态,并在确认数据迁移完全完成之后主动停止迁移工具。

步骤四:查看迁移进度

查看迁移工具日志

您可以通过迁移工具日志log/sync.INFO.log查看迁移进度,包括同步任务进度和同步表进度。

  • 正在同步的表

    image

    搜索关键字Running table detail,会输出当前正在迁移的表名称。

  • 同步任务进度

    image

    搜索关键字Sync job progress,如果进度显示100%,则说明迁移完成。

    说明

    该进度只反映了本次同步检查的进度。由于源集群的数据可能会持续更新,同步工具会在接下来的检查周期中启动新的数据同步任务。因此,在下一周期的进度检查后,显示的进度百分比可能会下降,例如可能从100%减少到90%。

    以下是与进度相关的参数详情。

    参数

    说明

    total

    此次数据迁移中的总作业数。

    ddlPending

    待执行的DDL作业数量。

    ddlRunning

    当前正在执行的DDL作业的数量,该参数值通常为0或1。

    jobPending

    待执行的数据同步作业数量。

    sent

    已发送但尚未开始的数据同步作业数量。

    running

    正在运行中的数据同步作业数量。

    finished

    已成功执行完毕的数据同步作业数量。

    failed

    执行失败的数据同步作业累积数量。通常,此数值可忽略,因为迁移过程中会周期性地重试失败的作业。

    unknown

    状态未知的作业数量。

  • 同步表进度

    image

    搜索关键字Sync table progress,如果进度显示100%,则说明迁移完成。

    说明

    该进度反映了自同步工具启动运行后,至少有一次同步任务执行成功的表数量占配置的表总数量的占比,当配置的所有表至少同步成功过一次之后,该进度便为100%,且该值不会下降。若同步表进度为100%且同步任务进度为100%时,说明在该检查周期内,源集群和目标集群的数据完全一致;若同步表进度为100%且同步任务进度小于100%时,说明有部分表在同步增量数据。

    以下是与进度相关的参数详情。

    参数

    说明

    finishedTableRatio

    至少有一次成功执行同步任务的数据表所占比例。

    expiredTableRatio

    数据表过期数据所占比例。

    total table

    此次数据迁移配置的数据表总数。

    finished table

    至少有一次同步任务执行成功过的数据表数量。

    unfinished table

    还未进行过数据同步的数据表数量。

    unfinished detail

    还未进行过数据同步的数据表名称列表。

联系我们

如果您在迁移过程中有任何疑问,请提交工单进行咨询。