在 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运维——集群动态迁移与扩缩容(不停机+不丢失)