文档

迁移StarRocks数据至EMR Serverless StarRocks

更新时间:

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

适用场景

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

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

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

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

前提条件

  • 在进行迁移之前,请务必加入钉钉群24010016636申请开启EMR Serverless StarRocks的迁移功能,并获取迁移工具。

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

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

    image

使用限制

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

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

    如果您的目标实例版本低于所需版本,建议您加入钉钉群24010016636,联系工程师帮助您升级到合适的小版本。

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

  • 暂不支持迁移包含自增列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实例间的数据迁移时,请加入钉钉群24010016636联系工程师获取待迁移实例所需的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

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

    说明

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

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

    参数

    说明

    total

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

    ddlPending

    待执行的DDL作业数量。

    ddlRunning

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

    jobPending

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

    sent

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

    running

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

    finished

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

    failed

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

    unknown

    状态未知的作业数量。

  • 同步表进度

    image

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

    说明

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

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

    参数

    说明

    total table

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

    finished table

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

    unfinished table

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

    unfinished detail

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

查看迁移事务状态

迁移工具会为每张表开启一个事务。您可以通过查看该事务的状态了解该表迁移的状态。其中 <db_name>为该表所在数据库的名称。

SHOW PROC "/transactions/<db_name>/running";

查看分区数据版本

您可以对比源集群和目标集群中对应分区的数据版本了解该分区的迁移状态。其中 <table_name>为该分区所属表的名称。

SHOW PARTITIONS FROM <table_name>;

查看数据量

您可以对比源集群和目标集群的数据量,以了解迁移的状态。

SHOW DATA;

查看表行数

您可以对比源集群和目标集群中表的行数,以了解各表迁移的状态。

SELECT TABLE_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_NAME;

联系我们

如果您在迁移过程中有任何疑问,请加入钉钉群24010016636进行咨询。

  • 本页导读 (1)