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/
作成されたスナップショットを確認後、スナップショットを削除します。
$ 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/
調べてみると"-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>