在 Kubernetes,ClickHouse Operator 管理的集群里,进行数据无损缩容自动化
这是一组 Python 脚本:(Shard removal.png)
disable_write_to_last_n_shards.py 负责将准备移除的 shard (分片) 设成只读
migrate_parts.py 负责将数据均匀地复制到其他分片
remove_last_n_shards.py 负责移除分片
其中,第 1、3 脚本透过修改 yaml 完成,第 2 脚本则运行 ClickHouse 扩充的 SQL 语句完成。
Before removal.png 展示移除前一个 ClickHouse 集群里有三个分片 0, 1, 2,每个分片有两个副本。
Readonly shard 2.png 展示第 1 脚本运行前后,分片 2 被设成只读。
Data migrated.png 展示第 3 个分片 (编号 2) 数据已经迁移到前两个。
Removing shard 2.png 展示分片 2 正在被删除。