在 Zookeeper 集群中重新添加丢失的 Clickhouse 副本

jmv*_*bxx 1 apache-zookeeper clickhouse

我们之前有三个 Clickhouse 节点在 Zookeeper 中完美同步,直到其中一个节点丢失。

Clickhouse 节点完全按照以前的方式重建(使用 Ansible),并create table运行相同的命令,导致出现以下错误。

命令:

CREATE TABLE ontime_replica ( ... )
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/ontime_replica', '{replica}', FlightDate, (Year, FlightDate), 8192)
Run Code Online (Sandbox Code Playgroud)

错误是:

Received exception from server:
Code: 253. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Replica /clickhouse/tables/01/ontime_replica/replicas/clickhouse1 already exists..
Run Code Online (Sandbox Code Playgroud)

我们目前使用的是 Zookeeper 版本 3.4.10,我想知道是否有办法删除 Zookeeper 中的现有副本,或者简单地让 Zookeeper 知道这是现有副本的新版本。

先感谢您!

jmv*_*bxx 5

我的解决方案的方法是不正确的。最初,我认为我需要删除 Zookeeper 中的副本。相反,Clickhouse 服务器中的以下命令可以解决此问题。

  • 从另一个工作节点复制 SQL 文件。该文件位于/var/lib/clickhouse/metadata/default

  • chown clickhouse:clickhouse <database>.sql

  • chmod 0640 <database>.sql

  • sudo -u clickhouse touch /var/lib/clickhouse/flags/force_restore_data

  • service clickhouse-server start