什么是 ClickHouse Operator
- 集群生命周期管理 (创建、更新、扩缩容、删除)
- ClickHouse Keeper 集群协调
- 自动生成配置
- 数据库 schema 同步
- 滚动更新和升级
- 存储预配
自定义资源
ClickHouseCluster
KeeperCluster
协调
需要 ClickHouse Keeper
keeperClusterRef 引用该 Keeper 集群。默认情况下,operator 会在 ClickHouseCluster 所在的命名空间中查找,但你也可以设置 keeperClusterRef.namespace,使其指向另一个受监视命名空间中的 KeeperCluster。
Keeper 的一对一关系
- 多个 ClickHouseCluster 不能引用同一个 KeeperCluster
- 重新创建 ClickHouseCluster 时,必须同时重新创建其 KeeperCluster
删除 ClickHouseCluster 或 KeeperCluster 资源时,Persistent Volumes 不会自动删除。
- 删除 ClickHouseCluster 资源
- 删除 KeeperCluster 资源
- 等待所有 pod (容器组) 终止
- 如果希望重新开始,可选择删除 PersistentVolumeClaims
- 同时重新创建 KeeperCluster 和 ClickHouseCluster
Schema 复制
会复制哪些内容
- Replicated 数据库定义
- 集成型数据库引擎 (PostgreSQL、MySQL 等)
- 非复制数据库 (Atomic、Ordinary 等)
- 非复制数据库中的本地表
- 表数据 (由 ClickHouse 复制机制处理)
推荐:使用 Replicated 数据库引擎
- 在所有节点之间自动复制 schema
- 简化表管理
- Operator 可与新副本同步
- 在整个集群中保持 schema 一致
避免使用非 Replicated 引擎
- 必须在每个副本上单独创建表
- 节点之间可能出现 schema 漂移
- Operator 无法自动同步新增副本
禁用 schema 复制
spec.settings.enableDatabaseSync 设置为 false。
存储管理
数据卷配置
dataVolumeClaimSpec 中指定存储要求:
存储生命周期
- 创建:PVC 会随集群自动创建
- 扩容:如果 StorageClass 允许卷扩容,则支持扩容
- 保留:删除集群时,PVC 不会自动删除
- 复用:如果使用相同名称重新创建集群,则可复用现有 PVC
默认配置亮点
- 预配置集群: 名为
default的集群,包含所有 ClickHouse 节点。 - 默认宏: 预定义了一些实用的宏:
{cluster}:集群名称 (default){shard}:分片编号{replica}:副本编号
- RBAC 实体采用复制存储
- 用户自定义函数 (UDF) 采用复制存储