用途:面向 ClickHouse 复制集群的运维与排障,围绕 ReplicatedMergeTree 引擎讲解复制状态监控、故障切换、延迟诊断、法定写入(quorum)与 Keeper 管理。
主要能力:
- 复制基础:引擎写法 ReplicatedMergeTree('/clickhouse/tables/{shard}/{database}/{table}', '{replica}'),依赖 ZooKeeper 或 ClickHouse Keeper;所有副本对等,任意副本可接受写入;默认异步复制。
- 复制监控:system.replicas 提供每表状态(absolute_delay、queue_size、is_leader、is_readonly);system.replication_queue 查看待处理操作(fetches、merges、mutations)。健康指标:absolute_delay = 0 表示完全追平;is_readonly = 0 表示可写;queue_size < 10 为健康;active_replicas = total_replicas 表示全部在线。
- 故障切换:SELECT * FROM system.replicas WHERE is_readonly = 1 检查只读副本;SELECT * FROM system.zookeeper WHERE path = '/' 验证 Keeper 连通性;因 Keeper 断连导致的只读会在连接恢复后自动恢复;永久故障用 SYSTEM DROP REPLICA 'replica_name' FROM TABLE db.table;元数据损坏用 SYSTEM RESTORE REPLICA db.table。
- 法定写入:SET insert_quorum = 2 等待 N 个副本确认;SET insert_quorum_parallel = 1 并行法定写入(v21.8+);SET insert_quorum_timeout = 60000 超时毫秒数;用于必须承受节点故障的关键数据。
- Keeper 管理:ClickHouse Keeper 是 ZooKeeper 的推荐替代;用 system.zookeeper 浏览 ZK 树;关键路径 /clickhouse/tables/ 存放表元数据;SELECT * FROM system.asynchronous_metrics WHERE metric LIKE '%Keeper%' 检查 Keeper 健康。
常见问题:脑裂(多个 leader,通常为 Keeper 问题,重启 Keeper);只读副本(丢失 Keeper 会话,检查网络与 Keeper 日志);队列堆积(fetch 缓慢,检查网络带宽与磁盘 I/O);副本分叉(用 SYSTEM SYNC REPLICA db.table 强制同步)。
限制:资料未提供具体版本兼容范围、性能基准与完整配置示例;OOM 相关副本故障与磁盘写满场景需加载 troubleshooting 技能处理。