Clickhouse版本:20.3.6.40-2
Zookeeper版本:3.4.14
clickhouse集群三个节点,一分片,三副本,三个节点数据完全一样
1. 问题描述
在使用连接工具操作时,发现其中一个节点连接拒绝,无法操作,另外两个节点正常,报错如下:
2. 问题定位
经查看日志,系统报错MySQLHandlerFactory:Failed to read RSA key pair from server
由于clickhouse服务配置了systmctl,所以一直在重启,启动5s后又会因为报错挂掉,一直反复重启,具体报错如下:
3. 解决过程
起初很疑惑,为什么会报mysql相关的错,因为服务没有任何依赖mysql的东西,也没有创建mysql引擎的相关表,多次查找资料也未果。
最终只能尝试将clickhouse下的data目录备份后,然后删除,再重新启动,结果服务启动后不报错了!
结论是clickhouse元数据有问题!
下面是详细步骤:
由于此集群是三节点互相复制的,所以即使一个节点无法恢复也可以切到其他节点
(1)以防万一,先将目录备份一个,然后删除报错节点clickhouse下data目录
(2)删除zk下对应报错节点的建表信息,因为zk上是会有元数据记录的,不删除的话建表会提示表已存在!
具体操作为rmr /clickhouse/tables/分片名/表名/replicas/服务器名,具体多少张表,执行多少条就可以了
(3)重启clickhosue服务
(4)重新建表,建表之后数据就会自动从另外两个节点同步过来了
表多的话可以使用脚本clickhouse-client -u username --password passwd -d databasename --multiquery < /home/data/createtable.sql
建表语句都放在createtable.sql即可
--------------------------------END --------------------------------
希望对大家有帮助,有问题多交流