スナップショットからの復元

スナップショットから復元する方法。

スナップショットからキースペースを復元するには、テーブルのすべてのスナップショット・ファイルが必要です。また、インクリメンタル・バックアップを使用している場合は、スナップショットを取得した後で作成されたすべてのインクリメンタル・バックアップ・ファイルが必要です。

一般に、スナップショットを復元する前に、テーブルをTRUNCATEしてください。削除前にバックアップを行い、削除後に、あらかじめTRUNCATEを行わずにバックアップを復元しても、元のデータ(生データ)を取り戻せません。コンパクションを行うまでは、トゥームストーンは元の行とは別のSSTableにあるため、元の行を含むSSTableを復元してもトゥームストーンは削除されず、データは削除されたままのように見えます。

Cassandraは、テーブルのスキーマが存在する場合にのみスナップショットからデータを復元できます。スキーマをバックアップしなかった場合は、以下のいずれかを実行できます。

  • 方法1
    1. 以下の説明に従って、スナップショットを復元します。
    2. スキーマをもう一度作成します。
  • 方法2
    1. スキーマをもう一度作成します。
    2. 以下の説明に従って、スナップショットを復元します。
    3. refreshを実行します。

手順

スナップショットは、以下のいくつかの方法で復元できます。

  • sstableloaderツールを使用する。
  • スナップショットのSSTableディレクトリー(スナップショットを取る」を参照)をdata/キースペース/テーブル名-UUIDディレクトリーにコピーしてから、JConsoleを介して、各カラム・ファミリーのカラム・ファミリーMbeanにあるJMXメソッドloadNewSSTables()を呼び出す。loadNewSSTables()呼び出しの代わりに、nodetool refreshを使用できます。
    dataディレクトリーの場所は、インストールのタイプによって異なります。
    • パッケージ・インストール:/var/lib/cassandra/data
    • tarボール・インストール:install_location/data/data
  • 以下で説明するノード再起動メソッドを使用する。