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

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

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

手順

  1. スキーマが確実に一致するように、すべてのノードでローリング再起動を実行します。すべてのノードでnodetool describeclusterを実行します。スキーマ・バージョンは1つだけであることを確認します。
    ヒント: OpsCenterモニタリングを使用してローリング再起動を実行します。
  2. 各ノードで、修正するテーブルのdataディレクトリーを確認します。dataディレクトリーのデフォルトの位置は/var/lib/cassandra/dataです。テーブルのディレクトリーが1つのみの場合は、次のノードに移動してこの手順を繰り返します。テーブルのディレクトリーが複数ある場合は、次の手順に進みます。
    注: 2つのディレクトリーがある場合は、古いディレクトリーに更新前の古いテーブル・データが格納されます。新しいディレクトリーには、更新後の新しいデータが格納されます。
  3. system_schema.tablesでどのid(カラム・ファミリーID)が最新のテーブルIDであるかを特定します。
    cqlsh -e "SELECT * FROM system_schema.tables" | grep <tablename>
  4. 古いテーブルから新しいテーブルのディレクトリーにデータを移動し、古いディレクトリーを削除します。必要に応じてこの手順を繰り返します。
  5. nodetool refreshを実行します。