2016-08-26 13 views
2

3ノードで構成された新しく新しいCassandra 2.2.5クラスタに復元しています。新しいクラスタの新しいクラスタに復元するときにCassandra再起動の問題が発生する

初期クラスタ健康:1つずつ3つのノードのすべての

1)cassandra stop

-- 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の一環として、私は新しいクラスタ上で次のようにします。

2)バックアップされたトークンリング情報を持つ3つのノードのすべてに対してcassandra.yamlを編集します。

ノード 10.40.1.110.40.1.2

4)cassandra start10.40.1.3それぞれ[ドキュメントからステップ2]

3)ドキュメントからステップ4] /var/lib/cassandra/data/system/*からコンテンツを削除します。

結果: 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が変更される可能性があることを理解しています。

私の質問は:

は私が明示的に自分自身を交換するために、開始時の状態する必要がありますか?ドキュメントが不完全であるか、私のステップに何かが欠けていますか?

答えて

0

前回の削除に失敗した古いディレクトリcommit_logとsaved_cachesがありました。指示は削除されたディレクトリで正しく機能します。

0

私は

$のsystemctl停止カサンドラ

を行った後通常、このような状況で、それは私が

$ psのawxsを実行します| grep cassandra

は、まだcassandraにいくつかの機能があります。

通常は

$ kill -9 cassandraです。PID

$ RM -rfの/ var/libに/カサンドラ/データ/ * & &の/ var/libに/カサンドラ/ commitlog/*

0
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ノードにログインしてください。そして、あなたはいくつかのプロセスが実行されている参照してください。次のsteps-

$ jps

に従ってください。たとえば:

9107 Jps 1112 CassandraDaemon

は、その後、あなたがjpsを実行した後に表示プロセスIDでCassandraDaemonプロセスを殺します。私の例では、CassandraDaemonのID 1112がここにあります。

$ kill -9 1112

は、あなたがCassandraDaemonが利用できなくなります表示されますwhile-

$ jps

後に再度のプロセスを確認してください。

9170 Jps

その後、あなたsaved_cachescommitlogを削除して、もう一度cassandraを開始します。 上記のエラーで苦しんでいるすべてのノードでこれを行います。

関連する問題