云数据库ClickHouse集群间的数据迁移

当您计划切换云数据库 ClickHouse 社区兼容版集群的版本时,可以使用云数据库ClickHouse控制台的实例迁移功能进行数据迁移。该功能支持数据的全量迁移和增量迁移,从而保证了您数据的完整性。

前提条件

  • 源集群和目标集群均需具备的条件:

    • 均为社区兼容版集群。

    • 均处于运行中状态。

    • 均已具有数据库账号和密码。

    • 二者冷热分层状态一致。

    • 二者使用相同的VPC且在同一地域,并已将彼此的IP添加到了对方白名单中。如果不满足此条件,请先解决网络问题。具体操作,请参见如何解决目标集群与数据源网络互通问题

      说明

      您可以通过SELECT * FROM system.clusters;查看云数据库ClickHouse实例的IP地址。如何设置白名单,请参见设置白名单

  • 目标集群需额外满足如下条件:

    • 版本高于或等于源集群版本。

    • 未使用存储空间需大于或等于源集群已使用存储空间的1.2倍。

  • 源集群的所有本地表都需要具有唯一的分布式表。

注意事项

  • 迁移过程中,目标集群会暂停合并(Merge),但源集群不会。

  • 迁移内容:

    • 支持迁移的内容包含集群、库、表、数据字典、物化视图、用户权限和集群配置。

    • 不支持迁移Kafka和RabbitMQ引擎表。

      重要

      为保证Kafka和RabbitMQ数据不分流,请先清理源集群的Kafka和RabbitMQ引擎表后,再在目标集群创建,或者使用不同的消费者组。

    • 非MergeTree类型的表(例如外表、Log表等)仅支持迁移表结构。

      说明

      当源集群存在非MergeTree类型的表时,数据迁移后,目标集群此类表只有表结构,没有具体的业务数据。具体业务数据迁移可以使用remote函数进行迁移。具体操作,请参见通过remote函数进行数据迁移

集群影响

迁移过程中,支持对源集群的表进行读取与写入数据操作,但不支持DDL操作(增、删、改库表的元数据操作)。

重要
  • 为了保证迁移任务正常完成,当迁移任务达到99%进度时,且此时在源集群预设的停写时间范围内,源集群会主动停止写入。

  • 当数据全部迁移完成或超出源集群预设的停写时间范围,源集群会自动恢复数据写入。

操作步骤

步骤一:创建迁移任务

  1. 登录云数据库ClickHouse控制台

  2. 集群列表页面,选择社区版实例列表,单击目标集群ID。

  3. 在左侧导航栏,单击实例迁移

  4. 实例迁移页面,单击创建迁移任务

    1. 配置源实例与目标实例。

      配置以下信息,单击测试连接进行下一步

      说明

      测试连接成功后,进入下一个步骤。如果测试连接失败,请根据提示,重新配置源实例和目标实例。

      image

    2. 确认迁移内容。

      仔细阅读页面中数据迁移的包含内容提示信息,单击下一步:预检测并启动同步

    3. 后台迁移链路预检测并启动任务。

      后台会对目标实例和源实例进行实例状态检测存储空间检测本地表和分布式表检测

      • 检测成功:

        1. 仔细阅读页面迁移过程中对实例的影响提示内容。

        2. 设置停写时间

          说明
          • 为了保证迁移的成功率,建议您停写时间至少设置30分钟。

          • 迁移任务必须在任务启动(即任务创建完成)后的5天内结束,因此,源集群停写时间的结束日期必须小于或等于当前日期+5

          • 为了降低迁移对您业务的影响,建议您设置的停写时间范围处于您的业务低峰时段。

        3. 单击完成

          说明

          单击完成后,任务创建完成且启动任务。

      • 检测失败:您需要按照提示信息进行操作,重新进行数据迁移。检测内容及要求如下。

        检测项目

        检测要求

        实例状态检测

        迁移发起时,源集群和目标集群不能有正在运行的管控任务(包含扩容,升降配等)。如果当前源集群和目标集群有管控任务正在运行,则不能发起迁移任务。

        存储空间检测

        迁移进行前,进行存储空间校验。保证目标集群的存储空间大于等于源集群的存储空间的1.2倍。

        本地表和分布式表检测

        如果源集群存在本地表没有创建分布式表或者分布式表不唯一,则校验失败。请删除多余的分布式表或创建唯一分布式表。

步骤二:查看迁移任务

  1. 集群列表页面,选择社区版实例列表,单击目标集群ID。

  2. 在左侧导航栏,单击实例迁移

    在实例迁移列表页面,查看迁移任务的迁移状态迁移进度停写窗口

    说明

    当迁移任务达到99%进度时,且迁移状态为迁移进行中时,会触发源集群停写。停写规则如下:

    • 触发时间源集群预设的停写时间范围内,源集群停写。

    • 触发时间不在源集群预设的停写时间范围内,且小于或等于任务启动(即任务创建)日期+5,您可通过修改停写窗口时间,继续迁移任务。

    • 触发时间不在源集群预设的停写时间范围内,且大于任务启动(即任务创建)日期+5,迁移失败。您需取消迁移任务,并清理目标集群中已迁移的数据,重新创建迁移任务,发起迁移。

步骤三:(可选)取消迁移任务

  1. 集群列表页面,选择社区版实例列表,单击目标集群ID。

  2. 在左侧导航栏,单击实例迁移

  3. 在目标迁移任务的操作列,单击取消迁移

  4. 取消迁移对话框,单击确定

    说明
    • 取消迁移后,任务列表不会立即更新,建议您,通过间隔刷新查看任务状态。

    • 任务取消后,任务的迁移状态会变成已完成。

    • 在您重新发起迁移之前,必须先清理目标集群中已迁移的数据,避免出现数据重复的情况。

步骤四:(可选)修改停写窗口时间

  1. 集群列表页面,选择社区版实例列表,单击目标集群ID。

  2. 在左侧导航栏,单击实例迁移

  3. 在目标迁移任务的操作列,单击修改停写窗口

  4. 修改停写窗口对话框,选择停写时间

    说明

    停写时间设置规则,与创建迁移任务中停写时间的设置一致。

  5. 单击确定

相关文档

如何从自建的ClickHouse将数据迁移至云数据库ClickHouse,请参见将自建ClickHouse数据迁移到云ClickHouse中