【问题标题】:How to migrate Clickhouse's Zookeeper to new instances?如何将 Clickhouse 的 Zookeeper 迁移到新实例?
【发布时间】:2021-04-18 13:38:40
【问题描述】:

我在 Kubernetes 上的 2 个副本中托管 ClickHouse (v20.4.3.16),它在 3 个副本中使用 Zookeeper (v3.5.5)(也托管在同一个 Kubernetes 集群上)。

我需要使用另一个安装迁移 ClickHouse 使用的 Zookeeper,仍然是 3 个副本,但 v3.6.2。

我尝试做的是:

  • 我停止了 ClickHouse 的所有实例以冻结 Zookeeper 节点。 使用 zk-shell,我将旧 ZK 集群的 /clickhouse 中的所有 znode 镜像到新的(虽然花了一些时间,但完成没有问题)
  • 我重新启动了 ClickHouse 的所有实例,一次一个,现在已附加到 Zookeeper 的新实例。
  • 两个 ClickHouse 实例都正确启动,没有任何错误,但在我尝试(或有人尝试)通过插入向表添加行时,ClickHouse 记录如下内容:
2021.01.13 13:03:36.454415 [ 135 ] {885576c1-832e-4ac6-82d8-45fbf33b7790} <Warning> default.check_in_availability: Tried to add obsolete part 202101_0_0_0 covered by 202101_0_1159_290 (state Committed)

并且永远不会插入新数据。

我已经阅读了有关数据复制和重复数据删除的所有信息,但我确信我在插入中添加了新数据,而且所有表都使用了时间字段(event_time 或 update_timestamp 等),但它根本没有不行。

将 ClickHouse 附加回旧的 Zookeeper,插入相同的数据不会出现问题。

在更改 Zookeeper 端点之前有什么需要做的吗?我错过了什么明显的东西吗?

【问题讨论】:

    标签: apache-zookeeper clickhouse


    【解决方案1】:

    使用zk-shell,我

    您不能使用此方法,因为它不会复制用于零件块编号的自动增量值。

    还有更简单的方法。您可以通过添加新的 ZK 节点作为关注者来迁移 ZK 集群。

    这是 ZK 3.4.9 的计划(无动态重新配置): 1. 将3个新ZK节点配置为6个节点(3个旧+3个新)的集群,启动它们。目前 3 个旧 ZK 节点无需更改。 新服务器无法连接并下载快照,因此我必须先在 4 个节点的集群中启动其中一个。 2.确保3个新ZK节点作为follower连接到旧ZK集群(在3个新ZK节点上运行echo stat | nc localhost 2181) 3.确认leader有5个同步followers(在leader上运行echo mntr | nc localhost 2181,寻找zk_synced_followers) 7. 在 3 个新 ZK 节点上从 zoo.cfg 中删除 3 个旧 ZK 节点。 8. 停止 CH 中的数据加载(这是为了在 CH 丢失 ZK 时最大程度地减少错误)。 4.更改CH节点configs中的zookeeper部分(移除3个旧的ZK服务器,添加3个新的ZK服务器) 5.重启所有CH节点(CH必须重启才能连接不同的ZK服务器) 6. 确保没有从 CH 到 3 个旧 ZK 节点的连接(在 3 个旧节点上运行 echo stat | nc localhost 2181,检查它们的 Client 部分)。 11.关闭3个旧ZK节点 9. 重启 3 个新的 ZK 节点。它们应该形成一个由 3 个节点组成的集群。 10.当CH重新连接到ZK时,开始数据加载。

    Altinity KB

    【讨论】:

    • 感谢您的回答!我不能完全增加 ZK 节点的数量,然后以这种方式将它们从集群中拆分出来,因为我在 Kubernetes 上执行 ZK。我正在考虑增加节点的数量.. 但是,不是拆分它们,而是在真正的新节点上进行备份和恢复(更改 myid)
    • >因为我在 Kubernetes 上执行 ZK。你可能错了。用 k8s 标签问这个问题
    • 您可以简单地将快照和日志从旧 ZK 服务器复制到新的您可以停止 CH 5 分钟。
    • 是的,我只是这样做了,不确定如何复制它们,因为我也在升级 ZK 版本,但我成功了
    • 是的,我错了,我很可能使用动态重新配置将两个集群链接在一起,但我在完成另一种方法后才发现。
    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2019-09-04
    • 2018-02-08
    相关资源
    最近更新 更多