Skip to content

Clickhouse 集群zookeeper数据丢失恢复


Cannot create table from metadata file /var/lib/clickhouse/metadata/xx/info_xxx.sql, error: Coordination::Exception: Can’t get data for node /clickhouse/tables/xx/cluster_xxx-01/info_xxxx/metadata: node doesn’t exist (No node), stack trace:
0. /usr/bin/clickhouse-server(StackTrace::StackTrace()+0x16) [0x7108056]
1. /usr/bin/clickhouse-server(Coordination::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int, int)+0x31) [0x6c20381]
2. /usr/bin/clickhouse-server(Coordination::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int)+0x1a5) [0x6c21135]


Create a MergeTree table with a different name. Move all the data from the directory with the ReplicatedMergeTree table data to the new table’s data directory. Then delete the ReplicatedMergeTree table and restart the server.

If you want to get rid of a ReplicatedMergeTree table without launching the server:

  • Delete the corresponding .sql file in the metadata directory (/var/lib/clickhouse/metadata/).
  • Delete the corresponding path in ZooKeeper (/path_to_table/replica_name).

After this, you can launch the server, create a MergeTree table, move the data to its directory, and then restart the server.


1. 将/var/lib/clickhouse/metadata/ 下的SQL备份之后删除
2. 将/var/lib/clickhouse/data/ 下的备份之后删除
3. 启动数据库
4. 创建同数据结构的MergeTree表
5. 将之前分布式表的数据文件夹复制到新表(MergeTree)的数据目录中。
6. 重启数据库
7. 重新创建原结构本地表
8. 重新创建原结构分布式表
9. insert into [分布式表] select * from [MergeTree表]


电子邮件地址不会被公开。 必填项已用*标注