如果你想使用clickhouse的集群模式或者使用多个副本来保障数据安全性,那么就离不开zookeeper的使用,关于zookeeper在clickhouse中的作用可以详见前文。很不幸的是,zookeeper是脆弱的,尤其在很大读写压力的场景下,zk出错是比较常见的问题,而且处理起来还比较棘手。下面根据一些经验,整理了一下在CH中常用 的关于zk的一些问题排查方法。
检查项 | SQL命令 | 备注 |
---|---|---|
zk服务是否可用 | select count() from system.zookeeper where path=’/’` | 也许zk服务是启动的,但是因为网络或者安全防火墙设置就是你的CH访问不到 |
zk服务异常 | select value from system.events where event=‘ZooKeeperHardwareExceptions’ | 大于0表示zk服务出现过硬件故障,CH将zk的故障分为了UserException、HardwareException、 OtherExceptions |
Read only table导致无法写入 | select value from system.metrics where metric=‘ReadonlyReplica’ | |
数据块丢失 | select value from system.events where event=‘ReplicatedDataLoss’ | |
不同的副本上数据不一致 |