当您计划切换云数据库 ClickHouse 社区兼容版集群的版本时,可以使用云数据库ClickHouse控制台的实例迁移功能进行数据迁移。该功能支持数据的全量迁移和增量迁移,从而保证了您数据的完整性。
前提条件
源集群和目标集群均需具备的条件:
均为社区兼容版集群。
如果您的需求是将社区版集群迁移至企业版集群,或者企业版集群迁移至社区版集群,请参见ClickHouse社区版集群迁移至企业版集群。
均处于运行中状态。
均已具有数据库账号和密码。
二者冷热分层状态一致。
二者使用相同的VPC且在同一地域,并已将彼此的IP添加到了对方白名单中。如果不满足此条件,请先解决网络问题。具体操作,请参见如何解决目标集群与数据源网络互通问题。
您可以通过
SELECT * FROM system.clusters;
查看云数据库ClickHouse实例的IP地址。如何设置白名单,请参见设置白名单。
目标集群需额外满足如下条件:
版本高于或等于源集群版本。最新版本,请参见社区兼容版。
未使用磁盘存储空间(不包含冷存)大于或等于源集群已使用磁盘存储空间(不包括冷存)的1.2倍。
源集群的所有本地表都需要具有唯一的分布式表。
注意事项
迁移速度:正常情况下,通过控制台迁移数据时,目标集群单节点的迁移速度大于20MB/s。如果源集群单节点的业务数据写入速度也大于20MB/s,您需评估目标集群迁移速度是否能够追上源集群写入速度。如果目标集群迁移速度无法追赶上源集群写入速度,则迁移可能一直无法完成。
迁移过程中,目标集群会暂停合并(Merge),但源集群不会。
支持迁移的内容包含集群、库、表、数据字典、物化视图、用户权限和集群配置。
不支持迁移Kafka和RabbitMQ引擎表。
迁移数据量:
冷数据:冷存数据的迁移速度相对较慢,建议您尽量清理自建集群中的冷存数据,以确保其总量不超过1TB。否则,迁移时间过长可能会导致迁移失败。
热数据:热数据如果超过10TB,迁移任务失败率比较高,不建议您使用此方案进行迁移。
如果数据不满足上述条件,迁移方案可选择手动迁移。
迁移内容:
为保证Kafka和RabbitMQ数据不分流,请先清理源集群的Kafka和RabbitMQ引擎表后,再在目标集群创建,或者使用不同的消费者组。
非MergeTree类型的表(例如外表、Log表等)仅支持迁移表结构。
当源集群存在非MergeTree类型的表时,数据迁移后,目标集群此类表只有表结构,没有具体的业务数据。具体业务数据迁移可以使用remote
函数进行迁移。具体操作,请参见通过remote函数进行数据迁移。
集群影响
源集群:迁移过程中,支持对源集群的表进行读取与写入数据操作,但不支持DDL操作(增、删、改库表的元数据操作)。
为了保证迁移任务正常完成,当控制台上数据迁移的预计剩余时间小于等于10分钟时,源集群会在预设的停写时间窗口内自动暂停数据写入。
在预设的停写时间范围内数据全部迁移完成,或超出源集群预设的停写时间范围仍未完成数据迁移,源集群都会自动恢复数据写入。
目标集群:迁移结束后,目标集群会持续一段时间高频merge操作,这会导致IO使用率上升,从而引起业务请求的延迟增加。建议您提前规划以应对业务请求延迟的潜在影响。具体merge操作时间,您需自己计算。如何计算,请参见计算迁移结束后的merge时间。
操作步骤
以下操作均在目标集群完成,而非源集群。
步骤一:创建迁移任务
在集群列表页面,选择社区版实例列表,单击目标集群ID。
在左侧导航栏,单击
。在实例迁移页面,单击创建迁移任务。
配置源实例与目标实例。
配置以下信息,单击测试连接进行下一步。
测试连接成功后,进入下一个步骤。如果测试连接失败,请根据提示,重新配置源实例和目标实例。
确认迁移内容。
仔细阅读页面中数据迁移的包含内容提示信息,单击下一步:预检测并启动同步。
后台迁移链路预检测并启动任务。
后台会对目标实例和源实例进行实例状态检测、存储空间检测和本地表和分布式表检测。
检测成功:
仔细阅读页面迁移过程中对实例的影响提示内容。
设置停写时间。
迁移的最后10分钟需要源集群停止写入,以确保数据的一致性。
为了保证迁移的成功率,建议您停写时间至少设置30分钟。
迁移任务必须在任务启动(即任务创建完成)后的5天内结束,因此,源集群停写时间的结束日期必须小于或等于
当前日期+5
。为了降低迁移对您业务的影响,建议您设置的停写时间范围处于您的业务低峰时段。
单击完成。
单击完成后,任务创建完成且启动任务。
检测失败:您需要按照提示信息进行操作,重新进行数据迁移。检测内容及要求如下。
检测项目
检测要求
检测项目
检测要求
实例状态检测
迁移发起时,源集群和目标集群不能有正在运行的管控任务(包含扩容,升降配等)。如果当前源集群和目标集群有管控任务正在运行,则不能发起迁移任务。
存储空间检测
迁移进行前,进行存储空间校验。保证目标集群的存储空间大于等于源集群的存储空间的1.2倍。
本地表和分布式表检测
如果源集群存在本地表没有创建分布式表或者分布式表不唯一,则校验失败。请删除多余的分布式表或创建唯一分布式表。
步骤二:评估迁移是否可以完成
如果源群的写入速度小于 20MB/s,您可跳过此步骤。
如果源集群的写入速度大于 20MB/s,由于目标集群理论上单节点写入速度也大于 20MB/s。为了确保目标集群的写入速度能够赶上源集群的写入速度,从而顺利完成迁移,您需要检查目标集群的真实写入速度,以评估迁移的可行性。具体操作如下:
步骤三:查看迁移任务
在集群列表页面,选择社区版实例列表,单击目标集群ID。
在左侧导航栏,单击实例迁移。
在实例迁移列表页面,查看迁移任务的迁移状态、运行阶段信息、停写窗口。
当运行阶段信息列中数据迁移的预计剩余时间小于等于 10 分钟时,且迁移状态为迁移进行中时,为了确保数据的一致性,将触发源集群停写。停写规则如下:
触发时间在源集群预设的停写时间范围内,源集群停写。
触发时间不在源集群预设的停写时间范围内,且小于或等于
任务启动(即任务创建)日期+5
,您可通过修改停写窗口时间,继续迁移任务。触发时间不在源集群预设的停写时间范围内,且大于
任务启动(即任务创建)日期+5
,迁移失败。您需取消迁移任务,并清理目标集群中已迁移的数据,重新创建迁移任务,发起迁移。
步骤四:(可选)取消迁移任务
在集群列表页面,选择社区版实例列表,单击目标集群ID。
在左侧导航栏,单击实例迁移。
在目标迁移任务的操作列,单击取消迁移。
在取消迁移对话框,单击确定。
取消迁移后,任务列表不会立即更新,建议您,通过间隔刷新查看任务状态。
任务取消后,任务的迁移状态会变成已完成。
在您重新发起迁移之前,必须先清理目标集群中已迁移的数据,避免出现数据重复的情况。
步骤五:(可选)修改停写窗口时间
在集群列表页面,选择社区版实例列表,单击目标集群ID。
在左侧导航栏,单击实例迁移。
在目标迁移任务的操作列,单击修改停写窗口。
在修改停写窗口对话框,选择停写时间。
停写时间设置规则,与创建迁移任务中停写时间的设置一致。
单击确定。
相关文档
如何从自建的ClickHouse将数据迁移至云数据库ClickHouse,请参见将自建ClickHouse数据迁移至云ClickHouse社区兼容版。
- 本页导读 (1)
- 前提条件
- 注意事项
- 集群影响
- 操作步骤
- 步骤一:创建迁移任务
- 步骤二:评估迁移是否可以完成
- 步骤三:查看迁移任务
- 步骤四:(可选)取消迁移任务
- 步骤五:(可选)修改停写窗口时间
- 相关文档