nodetool snapshot

データをバックアップする目的で、1つまたは複数のキースペースまたはテーブルのスナップショットを取得します。

データをバックアップする目的で、1つまたは複数のキースペースまたはテーブルのスナップショットを取得します。

構文 

$ nodetool <オプション> snapshot
( -cf <table> | --column-family <table> )
(-kc <ktlist> | --kc.list <ktlist> | -kt <ktlist> | --kt-list <ktlist>)
( -t <tag> | --tag <tag> )
-- ( <keyspace>) | ( <keyspace> ... )
  • オプションは以下のとおりです。
    • (-h | --host) <ホスト名> | <IPアドレス>
    • (-p | --port) <ポート番号>
    • (-pw | --password) <パスワード>
    • (-u | --username) <ユーザー名>
    • (-pwf <passwordFilePath | --password-file <passwordFilePath>)
  • -cfまたは--column-familyに続き、バックアップするテーブルの名前を指定します。
  • -kc、--kc.list、-kt、または--kt-listに続き、バックアップするkeyspace.table名のリストとしてktlistを指定します。
  • -tまたは--tagに続き、スナップショット名を指定します。
  • -- オプションと間違えられるような引数とオプションを分離します。
  • keyspaceは、-cfオプションを使用するときに必要な1つのキースペース名です。
  • keyspace_listは、スペースで区切られたオプションの1つ以上のキースペース名です。

構文の凡例 

  • 山かっこ(< >)は、リテラルではなく変数を意味する
  • イタリック体は指定が任意であることを意味する
  • パイプ(|)記号はORまたはAND/ORを意味する
  • 省略記号(...)は繰り返し可能を意味する
  • 範囲記号「(」および「)」はリテラルではなく、範囲を示す

説明 

このコマンドで、スナップショットを使用してデータをバックアップします。各オプションについては、以下の例を参照してください。

Cassandraは、スナップショットを取得する前にノードをフラッシュしてからスナップショットを取得し、データ・ディレクトリーにある各キースペースのsnapshotsディレクトリーにデータを格納します。-tオプションを使用してスナップショット・ディレクトリーの名前を指定しなかった場合は、スナップショットのタイムスタンプを使用してディレクトリーに名前が付けられます(1391460334889など)。Cassandraをアップグレードする前に、「taking a snapshot」の手順に従ってください。アップグレードする際は、すべてのキースペースをバックアップしてください。スナップショットについての詳細は、Apacheのドキュメントを参照してください。

例:すべてのキースペース 

ノード上のすべてのキースペースのスナップショットを取得します。LinuxではCassandraのbinディレクトリーで、たとえば以下のように指定します。

$ nodetool snapshot

以下のメッセージが表示されます。

Requested creating snapshot(s) for [all keyspaces] with snapshot name [1391464041163] Snapshot directory: 1391464041163

スナップショット名を指定しなかったため、スナップショットのタイムスタンプを使用してスナップショット・ディレクトリーに名前が付けられています。キースペースにデータが含まれていない場合、空のディレクトリーは作成されません。

例:1つのキースペースのスナップショット 

キースペースcyclingを作成した上で、そのキースペースのスナップショットを取得し、2015.07.17という名前を付けます。

$ nodetool snapshot -t 2015.07.17 cycling

以下のメッセージが表示されます。

Requested creating snapshot(s) for [cycling] with snapshot name [2015.07.17] Snapshot directory: 2015.07.17
cyclingキースペースにcyclist_nameupcoming_calendarという2つのテーブルが含まれており、キースペースのスナップショットを取得すると、2015.07.17という名前の複数のスナップショット・ディレクトリーが作成されます。データを含むいくつかの.dbファイルがこれらのディレクトリーに置かれます。たとえば、インストール・ディレクトリーから以下を実行します。
cd data/data/cycling/cyclist_name-a882dca02aaf11e58c7b8b496c707234/snapshots/2015.07.17
$ ls
la-1-big-CompressionInfo.db la-1-big-Index.db la-1-big-TOC.txt la-1-big-Data.db la-1-big-Statistics.db la-1-big-Digest.adler32 la-1-big-Filter.db la-1-big-Summary.db manifest.json
$  cd data/data/cycling/cyclist_name-a882dca02aaf11e58c7b8b496c707234/snapshots/2015.07.17
la-1-big-CompressionInfo.db la-1-big-Index.db la-1-big-TOC.txt la-1-big-Data.db la-1-big-Statistics.db la-1-big-Digest.adler32 la-1-big-Filter.db la-1-big-Summary.db manifest.json

例:複数のキースペースのスナップショット 

cyclingキースペースのほかに、mykeyspaceという名前のキースペースをすでに作成しており、両方のキースペースのスナップショットを取得するとします。

$ nodetool snapshot mykeyspace cycling

以下のメッセージが表示されます。

Requested creating snapshot(s) for [mykeyspace, cycling] with snapshot name [1391460334889] Snapshot directory: 1391460334889

例:1つのテーブルのスナップショット 

cyclingキースペース内のcyclist_nameテーブルのみのスナップショットを取得します。

$ nodetool snapshot --table cyclist_name cycling
Requested creating snapshot(s) for [cycling] with snapshot name [1391461910600] Snapshot directory:1391461910600
Cassandraは、cyclist_nameテーブルのバックアップ・データを含む1391461910600という名前のスナップショット・ディレクトリーを、たとえばdata/data/cycling/cyclist_name-a882dca02aaf11e58c7b8b496c707234/snapshotsに作成します。

例:異なるkeyspace.tablesスナップショットのリスト

cyclingキースペース内のcyclist_nameテーブルやtestキースペース内のsample_timesテーブルなど、異なるキースペースのスナップショットを取得します。keyspace.tableは、通常、スペースなしのコンマ区切りリストです。

$ nodetool snapshot -kt cycling.cyclist_name,test.sample_times
Requested creating snapshot(s) for [cycling.cyclist_name,test.sample_times] with snapshot name [1431045288401] Snapshot directory: 1431045288401