【问题标题】:How do you recover a cockroachdb cluster when every nodes goes down?当每个节点都出现故障时,如何恢复 cockroachdb 集群?
【发布时间】:2019-08-05 00:44:23
【问题描述】:

我有一个由 3 个节点组成的 cockroachdb 集群,它们位于 3 台不同的机器上,由 Docker Swarm 编排。

由于未链接到 cockroachdb 的原因,我的整个集群都崩溃了,每个 cockroachdb 容器都停止了。现在,我需要恢复并重新启动集群。

问题是,在启动过程中,蟑螂想在启动之前到达其他节点:

* WARNING: The server appears to be unable to contact the other nodes in the cluster. Please try:
* 
* - starting the other nodes, if you haven't already;
* - double-checking that the '--join' and '--listen'/'--advertise' flags are set up correctly;
* - running the 'cockroach init' command if you are trying to initialize a new cluster.

问题是,如何在没有其他容器可用的情况下启动第一个容器?还是我需要启动一个新集群?

【问题讨论】:

    标签: cockroachdb


    【解决方案1】:

    Cockroach 节点需要能够相互访问才能重新启动。在大多数情况下,节点的地址不会改变,节点会自动尝试以前看到的地址(这与 cockroach 数据一起保存到本地磁盘)。 如果地址在调用之间发生了变化,您需要告诉节点新地址。

    给定三个节点,您可以指定--join 上的所有节点地址:

    # on node 1:
    cockroach <flags> --join=node1address,node2address,node3address
    # on node 2:
    cockroach <flags> --join=node1address,node2address,node3address
    # on node 3:
    cockroach <flags> --join=node1address,node2address,node3address
    

    您还可以指定任何子集(例如:所有节点上的--join=node1address,或所有其他节点的地址)。

    不得再次运行init。它只需要初始化第一个节点,并且在集群的生命周期内只完成一次。

    【讨论】:

      猜你喜欢
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多