Cassandraの管理とかバックアップ/リストアとか

稼働中のCassandraの統計情報の確認とかバックアップ(スナップショット)/リストアは、Cassandra付属のツールで実行できます。


(統計情報)

$ $CASSANDRA_HOME/bin/nodetool -host localhost tpstats
Pool Name                    Active   Pending      Completed
STREAM-STAGE                      0         0              0
RESPONSE-STAGE                    0         0              0
ROW-READ-STAGE                    0         0              2
LB-OPERATIONS                     0         0              0
MESSAGE-DESERIALIZER-POOL         0         0              0
GMFD                              0         0              0
LB-TARGET                         0         0              0
CONSISTENCY-MANAGER               0         0              0
ROW-MUTATION-STAGE                0         0              3
MESSAGE-STREAMING-POOL            0         0              0
LOAD-BALANCER-STAGE               0         0              0
FLUSH-SORTER-POOL                 0         0              0
MEMTABLE-POST-FLUSHER             0         0              1
FLUSH-WRITER-POOL                 0         0              1
AE-SERVICE-STAGE                  0         0              0
$ $CASSANDRA_HOME/bin/nodetool -host localhost cfstats
Keyspace: Keyspace1
	Read Count: 2
	Read Latency: 8.974 ms.
	Write Count: 1
	Write Latency: 0.367 ms.
	Pending Tasks: 0
(中略)
		Column Family: Standard2
		SSTable count: 1
		Space used (live): 383
		Space used (total): 383
		Memtable Columns Count: 1
		Memtable Data Size: 46
		Memtable Switch Count: 0
		Read Count: 2
		Read Latency: 8.974 ms.
		Write Count: 1
		Write Latency: 0.367 ms.
		Pending Tasks: 0
		Key cache capacity: 1
		Key cache size: 1
		Key cache hit rate: 0.5
		Row cache: disabled
		Compacted row minimum size: 0
		Compacted row maximum size: 0
		Compacted row mean size: 0
(中略)

----------------


(スナップショット)
Memtableのデータを強制的にディスクへ書き出した後、スナップショットを取得します。

$ $CASSANDRA_HOME/bin/nodetool --host localhost flush Keyspace1
$ $CASSANDRA_HOME/bin/nodetool --host localhost snapshot 20100424_snap Keyspace1

"/var/lib/cassandra/data//snapshots"以下にスナップショットが作成されます。
作成されたスナップショットを確認後、スナップショットを削除します。

$ ls -al /var/lib/cassandra/data/Keyspace1/snapshots/
drwxr-xr-x 2 cassandra cassandra 4096 2010-05-24 21:56 1274705806250-20100424_snap
$ $CASSANDRA_HOME/bin/nodetool --host localhost clearsnapshot


(データのエクスポート/インポート)
"/var/lib/cassandra/data/"以下にある"xxx-Data.db"をJSON形式でエクスポートします。
調べてみると"-f"オプションでアウトプットファイルを指定できるとの記載がありましたが、当方の環境ではできなかったので、リダイレクト(パイプ)でエクスポートしました。

$ cd /var/lib/cassandra/data/Keyspace1
$ $CASSANDRA_HOME/bin/sstable2json Standard2-1-Data.db | sudo -u cassandra tee Standard2-1-Data.json
$ cat Standard2-1-Data.json 
{
  "jitsu102": [["626c6f67", "687474703a2f2f642e686174656e612e6e652e6a702f6a69747375313032", 1274199744262000, false]]
}

JSONからデータをインポートします。

$ sudo -u cassandra $CASSANDRA_HOME/bin/json2sstable -K Keyspace1 -c Standard2 Standard2-1-Data.json Standard2-1-Data.db

"sstable2json"および"json2sstable"コマンドのオプションは、以下のとおりとなります。

$ sstable2json <sstable> [-k key [-k key [...]] -x key [-x key [...]]]
$ json2sstable -K keyspace -c column_family <json> <sstable>