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

Posted

技术标签:

【中文标题】在 Zookeeper 集群中重新添加丢失的 Clickhouse 副本【英文标题】:Re-add lost Clickhouse replica in Zookeeper cluster 【发布时间】:2018-01-11 18:19:28 【问题描述】:

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

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

命令:

CREATE TABLE ontime_replica ( ... )
ENGINE = ReplicatedMergeTree('/clickhouse/tables/shard/ontime_replica', 'replica', FlightDate, (Year, FlightDate), 8192)

错误是:

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..

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

提前谢谢你!

【问题讨论】:

【参考方案1】:

我的解决方法不正确。最初,我认为我需要在 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

【讨论】:

参考官方文档:Recovery After Complete Data Loss

以上是关于在 Zookeeper 集群中重新添加丢失的 Clickhouse 副本的主要内容,如果未能解决你的问题,请参考以下文章

ZooKeeper运维——集群动态迁移与扩缩容(不停机+不丢失)

ZooKeeper运维——集群动态迁移与扩缩容(不停机+不丢失)

ZooKeeper运维——集群动态迁移与扩缩容(不停机+不丢失)

HBase宕机恢复-SplitWAL

zookeeper 在项目中的实际应用

spark基于Zookeeper的HA集群重启