2017-03-03 7 views
1

単一ノードのCassandraクラスタを1.1.5から2.0.xにアップグレードしようとしています。Cassandra 1.2.9から2.0.xへのアップグレード

私のプロダクションサーバーはLinuxで動作しています。 systemキースペースと私が興味を持っている特定のキースペースを維持して、カッサンドラを手に入れた後に残りの部分を落として、私のWindowsボックスにデータフォルダを引っ張った。

私がアップグレードされ、テスト:

  • 1.1.5 - > 1.2.0
  • 1.2.0 - > 1.2.8
  • 1.2.8 - > 1.2.9

蘭:

  • nodetool upgradesstables
  • describe schema
  • select * from table limit 100

すべてがバージョン1.xでよさそうです。

2.0.7にアップグレードしようとすると、私は(私が推奨されるアップグレードパスは1.2.9で見た - > 2.0.7)問題が発生した:

INFO 16:43:01,758 Opening C:\path\mykeyspace-mytable-ic-655 (97902117 bytes) 
ERROR 16:43:12,443 Exception encountered during startup 
java.lang.RuntimeException: Incompatible SSTable found. Current version jb is unable to read file: C:\path\mykeyspace\mytable\mykeyspace-mytable.mytable_location_idx-he-647. Please run upgradesstables. 
     at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:409) 
     at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:391) 
     at org.apache.cassandra.db.index.AbstractSimplePerColumnSecondaryIndex.init(AbstractSimplePerColumnSecondaryIndex.java:52) 
     at org.apache.cassandra.db.index.SecondaryIndexManager.addIndexedColumn(SecondaryIndexManager.java:292) 
     at org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:277) 
     at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:415) 
     at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:386) 
     at org.apache.cassandra.db.Keyspace.initCf(Keyspace.java:309) 
     at org.apache.cassandra.db.Keyspace.<init>(Keyspace.java:266) 
     at org.apache.cassandra.db.Keyspace.open(Keyspace.java:110) 
     at org.apache.cassandra.db.Keyspace.open(Keyspace.java:88) 
     at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:290) 
     at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:480) 
     at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:569) 

私はから実行upgradesstablesをしました1.2.9/bin/cassandraを起動した後、1.2.9/bin。 何が悪いと思いますか?

答えて

0

問題は、私の本番クラスタを私のローカル環境に部分的に移行したに過ぎないという事実にありました。 systemキースペースファイル全体と、私のキースペースの1つのみのファイルdataの一部をコピーしました。

私はすべてやり直すことによって、問題を修正:それに接続する1.1.5ローカル

  • 使用cqlshを設定

    • を、私は
    • ローカルで利用持っていなかった他のすべてのkeyspacesとテーブルをドロップ1.1.5 - > 1.2.0 - > 1.2.8 - > 1.2.9 - > 2.0.0 - > 2.0.1 - > 2.0.7(これらのすべてをやったと仮定して、 。
    • Cassandraが起動時に迷惑をかけていたインデックスファイルを削除しました(最後の魔法のようなアップグレードを行っているときに遭遇したかどうかはわかりませんが、前回の試みでバージョンアップしました)。私の推測では、カサンドラはすべてを見ていますが、upgradesstablesは時には後ろに残っています。
  • 3

    mytable_location_idx-he-6471.1.5 sstable(heバージョンであり、hは1.1であり、eh第5版である)です。アップグレード・スタイルを再度実行し、すべてのスータブルが移行されることを確認します。 sstableのバージョンは1.2の場合はiで始まり、2.0にアップグレードする前にそれがicになるようにします。

    +1

    うわー、ボスのようなバージョンコードを載せて! – Aaron

    関連する問題