当您计划切换云数据库 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函数进行数据迁移。
冷存数据的迁移速度相对较慢,因此建议您尽量清理冷存数据。冷存数据的容量不宜超过1TB,否则可能因迁移时间过长而导致迁移失败。
集群影响
迁移过程中,支持对源集群的表进行读取与写入数据操作,但不支持DDL操作(增、删、改库表的元数据操作)。
为了保证迁移任务正常完成,当迁移任务达到99%进度时,且此时在源集群预设的停写时间范围内,源集群会主动停止写入。
当数据全部迁移完成或超出源集群预设的停写时间范围,源集群会自动恢复数据写入。
操作步骤
以下操作均在目标集群完成,而非源集群。
步骤一:创建迁移任务
在集群列表页面,选择社区版实例列表,单击目标集群ID。
在左侧导航栏,单击实例迁移。
在实例迁移页面,单击创建迁移任务。
配置源实例与目标实例。
配置以下信息,单击测试连接进行下一步。
说明测试连接成功后,进入下一个步骤。如果测试连接失败,请根据提示,重新配置源实例和目标实例。
确认迁移内容。
仔细阅读页面中数据迁移的包含内容提示信息,单击下一步:预检测并启动同步。
后台迁移链路预检测并启动任务。
后台会对目标实例和源实例进行实例状态检测、存储空间检测和本地表和分布式表检测。
检测成功:
仔细阅读页面迁移过程中对实例的影响提示内容。
设置停写时间。
说明为了保证迁移的成功率,建议您停写时间至少设置30分钟。
迁移任务必须在任务启动(即任务创建完成)后的5天内结束,因此,源集群停写时间的结束日期必须小于或等于
当前日期+5
。为了降低迁移对您业务的影响,建议您设置的停写时间范围处于您的业务低峰时段。
单击完成。
说明单击完成后,任务创建完成且启动任务。
检测失败:您需要按照提示信息进行操作,重新进行数据迁移。检测内容及要求如下。
检测项目
检测要求
实例状态检测
迁移发起时,源集群和目标集群不能有正在运行的管控任务(包含扩容,升降配等)。如果当前源集群和目标集群有管控任务正在运行,则不能发起迁移任务。
存储空间检测
迁移进行前,进行存储空间校验。保证目标集群的存储空间大于等于源集群的存储空间的1.2倍。
本地表和分布式表检测
如果源集群存在本地表没有创建分布式表或者分布式表不唯一,则校验失败。请删除多余的分布式表或创建唯一分布式表。
步骤二:查看迁移任务
在集群列表页面,选择社区版实例列表,单击目标集群ID。
在左侧导航栏,单击实例迁移。
在实例迁移列表页面,查看迁移任务的迁移状态、迁移进度、停写窗口。
说明当迁移任务达到99%进度时,且迁移状态为迁移进行中时,会触发源集群停写。停写规则如下:
触发时间在源集群预设的停写时间范围内,源集群停写。
触发时间不在源集群预设的停写时间范围内,且小于或等于
任务启动(即任务创建)日期+5
,您可通过修改停写窗口时间,继续迁移任务。触发时间不在源集群预设的停写时间范围内,且大于
任务启动(即任务创建)日期+5
,迁移失败。您需取消迁移任务,并清理目标集群中已迁移的数据,重新创建迁移任务,发起迁移。
步骤三:(可选)取消迁移任务
在集群列表页面,选择社区版实例列表,单击目标集群ID。
在左侧导航栏,单击实例迁移。
在目标迁移任务的操作列,单击取消迁移。
在取消迁移对话框,单击确定。
说明取消迁移后,任务列表不会立即更新,建议您,通过间隔刷新查看任务状态。
任务取消后,任务的迁移状态会变成已完成。
在您重新发起迁移之前,必须先清理目标集群中已迁移的数据,避免出现数据重复的情况。
步骤四:(可选)修改停写窗口时间
在集群列表页面,选择社区版实例列表,单击目标集群ID。
在左侧导航栏,单击实例迁移。
在目标迁移任务的操作列,单击修改停写窗口。
在修改停写窗口对话框,选择停写时间。
说明停写时间设置规则,与创建迁移任务中停写时间的设置一致。
单击确定。
相关文档
如何从自建的ClickHouse将数据迁移至云数据库ClickHouse,请参见将自建ClickHouse数据迁移到云ClickHouse中。