テーブル・スキーマ衝突の修正

スキーマ衝突の問題の修正方法。

動的スキーマ作成または更新は、スキーマの衝突の原因となり、エラーを引き起こす可能性があります。

手順

  1. スキーマが確実に一致するように、すべてのノードでローリング再起動を実行します。すべてのノードでnodetool describeclusterを実行します。スキーマ・バージョンは1つだけであることを確認します。
  2. 各ノードで、dataディレクトリーを確認し、問題のあるテーブルの2つのディレクトリーを探します。ディレクトリーが1つしかない場合は、次のノードに進みます。複数のディレクトリー(更新前の古いテーブル・ディレクトリーと、更新後の新しいテーブル・ディレクトリー)がある場合は、続行します。
  3. system.schema_columnfamiliesでどのcf_id(カラム・ファミリーID)が最新のテーブルIDであるかを特定します。カラム・ファミリーIDは結果の5つ目のカラムです。
    $ cqlsh -e "SELECT * FROM system.schema_column_families" |grep <tablename>
  4. 古いテーブルから新しいテーブルのディレクトリーにデータを移動し、古いディレクトリーを削除します。必要に応じてこの手順を繰り返します。
  5. nodetool refreshを実行します。