【问题标题】:Cassandra restart issues while restoring to a new cluster恢复到新集群时出现 Cassandra 重启问题
【发布时间】:2017-01-03 13:37:40
【问题描述】:

我正在恢复到由 3 个节点组成的全新 Cassandra 2.2.5 集群。

新集群的初始集群运行状况:

--  Address       Load       Tokens       Owns    Host ID                               Rack
UN  10.40.1.1   259.31 KB   256          ?       d2b29b08-9eac-4733-9798-019275d66cfc  uswest1adevc
UN  10.40.1.2   230.12 KB   256          ?       5484ab11-32b1-4d01-a5fe-c996a63108f1  uswest1adevc
UN  10.40.1.3   248.47 KB   256          ?       bad95fe2-70c5-4a2f-b517-d7fd7a32bc45  uswest1cdevc

作为restore instructions in Datastax docs 的一部分,我在新集群上执行以下操作:

1) cassandra stop 在所有三个节点上一一对应。

2) 使用备份的令牌环信息为所有三个节点编辑cassandra.yaml。 [来自文档的第 2 步]

3) 从/var/lib/cassandra/data/system/* 中删除内容[来自文档的第 4 步]

4) cassandra start 分别在节点 10.40.1.110.40.1.210.40.1.3 上。

结果: 10.40.1.1重启成功:

--  Address       Load       Tokens       Owns    Host ID                               Rack
UN  10.40.1.1   259.31 KB   256          ?       2d23add3-9eac-4733-9798-019275d125d3  uswest1adevc

但是第二个和第三个节点重启失败说明:

java.lang.RuntimeException: A node with address 10.40.1.2 already exists, cancelling join. Use cassandra.replace_address if you want to replace this node.
    at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:546) ~[apache-cassandra-2.2.5.jar:2.2.5]
    at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:766) ~[apache-cassandra-2.2.5.jar:2.2.5]
    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:693) ~[apache-cassandra-2.2.5.jar:2.2.5]
    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:585) ~[apache-cassandra-2.2.5.jar:2.2.5]
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:300) [apache-cassandra-2.2.5.jar:2.2.5]
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:516) [apache-cassandra-2.2.5.jar:2.2.5]
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:625) [apache-cassandra-2.2.5.jar:2.2.5]
INFO  [StorageServiceShutdownHook] 2016-08-09 18:13:21,980 Gossiper.java:1449 - Announcing shutdown

java.lang.RuntimeException: A node with address 10.40.1.3 already exists, cancelling join. Use cassandra.replace_address if you want to replace this node.
...

最终的集群健康状况:

--  Address       Load       Tokens       Owns    Host ID                               Rack
UN  10.40.1.1   259.31 KB   256          ?       2d23add3-9eac-4733-9798-019275d125d3  uswest1adevc
DN  10.40.1.2   230.12 KB   256          ?       6w2321ad-32b1-4d01-a5fe-c996a63108f1  uswest1adevc
DN  10.40.1.3   248.47 KB   256          ?       9et4944d-70c5-4a2f-b517-d7fd7a32bc45  uswest1cdevc

我了解删除系统目录后,节点的 HostID 可能会发生变化。

我的问题是:

我需要在开始时明确声明以替换自己吗?文档不完整还是我的步骤中遗漏了什么?

【问题讨论】:

    标签: cassandra datastax restore cassandra-2.2


    【解决方案1】:

    原来有陈旧的目录 commit_log 和 saved_caches 我错过了早先删除。这些说明在删除这些目录时正常工作。

    【讨论】:

      【解决方案2】:

      通常在这种情况下,我做了一个

      $ systemctl stop cassandra

      我会运行的

      $ ps awxs | grep 卡桑德拉

      会注意到 cassandra 仍有一些功能。

      我通常会做一个

      $ kill -9 cassandra.pid

      $ rm -rf /var/lib/cassandra/data/* && /var/lib/cassandra/commitlog/*

      【讨论】:

        【解决方案3】:
        java.lang.RuntimeException: A node with address 10.40.1.3 already exists, cancelling join. Use cassandra.replace_address if you want to replace this node.
        

        如果您仍然面临上述错误,这意味着您的 cassandra 进程正在该节点上运行。首先登录10.40.1.3节点。然后按照以下步骤-

        $ jps

        您看到一些进程正在运行。例如:

        9107 Jps 1112 CassandraDaemon

        然后通过执行jps后看到的进程id杀死CassandraDaemon进程。在我的示例中,这里的进程 id 1112CassandraDaemon

        $ kill -9 1112

        然后过一会再检查进程-

        $ jps

        您将看到CassandraDaemon 将不再可用。

        9170 Jps

        然后删除您的saved_cachescommitlog 并重新启动cassandra。 对您提到的上述错误的所有节点执行此操作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-16
          • 2015-02-24
          • 2020-02-06
          • 2020-07-03
          • 2020-11-20
          • 2011-10-08
          • 2011-09-05
          • 1970-01-01
          相关资源
          最近更新 更多