intra-mart Accel Platform / Cassandra管理者ガイド

第7版 2014-01-01

«  Cassandra のバージョンアップ   ::   コンテンツ   ::   Cassandra の運用  »

Cassandra の操作

ここでは Cassandra の操作方法を説明します。

データ(keyspace)の削除

  • 設定例

    以下の説明は【表1. cassandra-config.xml設定例】を元に実行しています。

    【表1. cassandra-config.xml設定例】

    クラスタ名

    IMBox Cluster

    ホストのIPアドレス

    localhost

    ホストのポート番号

    9160

    認証設定の有効化

    false

    キースペース

    default

  1. Cassandra を起動します。

  2. Cassandra が起動していることを確認し、cassandra-cliを起動します。

    cassandra-cliの起動方法は以下の通りです。

    • Windowsの場合、<%CASSANDRA_HOME%/bin/cassandra-cli.bat>をダブルクリックします。

    • Linuxの場合、以下のコマンドで起動します。

      /usr/local/cassandra/bin/cassandra-cli
      
  3. コンソールが立ち上がったら、以下のコマンドを入力ください。

    connect localhost/9160;
    
  4. コンソールに「Connected to: “IMBox Cluster” on localhost/9160」と表示されるので、以下のコマンドを入力ください。

    drop keyspace default;
    
  5. コンソールに「... schemas agree across the cluster」が表示されたら削除完了です。

フラッシュ

Cassandra では、データは、memtableというメモリ上に保存されています。
cassandra.yamlの「data_file_directories」プロパティで設定したファイルシステム上の
SStableへデータを書き込むには、nodetoolのflushコマンドを実行する必要があります。
冗長化していない場合などにmemtableのデータが、SStableに書かれる前にサーバが停止した場合に
データが損失する恐れがありますので、定期的にフラッシュすることを推奨します。
# /usr/local/cassandra/bin/nodetool -h [実行したいノードのIPアドレス] flush
(windowsの場合:C:/ > %CASSANDRA_HOME%/bin/nodetool -h [実行したいノードのIPアドレス] flush)

実行すると、Cassandra 上で、以下のようなログが出力されます。

INFO 15:12:11,104 Enqueuing flush of Memtable-Versions@2895088(83/103 serialized/live bytes, 3 ops)
INFO 15:12:11,105 Writing Memtable-Versions@2895088(83/103 serialized/live bytes, 3 ops)
INFO 15:12:11,258 Completed flushing %CASSANDRA_HOME%\data\system\Versions\system-Versions-he-3-Data.db (247 bytes) for commitlog position ReplayPosition(segmentId=42805933509718, position=544)

スナップショット

Cassandra のデータをバックアップするには、nodetoolのsnapshotコマンドでスナップショットを取得することが必要です。
ただし、 Cassandra のスナップショットは、SStableというファイルのみをコピーするだけですので、スナップショットを実行する前に、
フラッシュコマンドを実行することが必須です。スナップショットの手順は以下のとおりです。
# /usr/local/cassandra/bin/nodetool -h [実行したいノードのIPアドレス] flush
# /usr/local/cassandra/bin/nodetool -h [実行したいノードのIPアドレス] snapshot -t (任意のスナップショット名)

コラム

スナップショットされたデータは、conf/cassandra.yamlの「data_file_directories」プロパティで指定された
ディレクトリの配下に格納されます。詳細は以下を参照してください。

以下、%CASSANDRA_HOME%/conf/cassandra.yamlの「data_file_directories」が/var/lib/cassandra/data/ の場合
Cassandra のシステム情報 /var/lib/cassandra/data/system/(カラムファミリー名)/snapshot/(スナップショット名)
IMBoxのデータ /var/lib/cassandra/data/default/(カラムファミリー名)/snapshot/(スナップショット名)

コラム

スナップショットの削除

  • snapshot ディレクトリすべてを削除します。

    # /usr/local/cassandra/bin/nodetool -h [実行したいノードのIPアドレス] clearsnapshot
    
  • 任意のsnapshotを削除します。

    # /usr/local/cassandra/bin/nodetool -h [実行したいノードのIPアドレス] clearsnapshot -t (任意のスナップショット名)
    

注意

Windows環境にて clearsnapshot コマンドを実行した場合、削除対象のファイルがCassandraのプロセスに握られているため削除処理に失敗します。
以下のコマンドを実行することでSSTableが再生成され、その過程でファイルへの参照が外れます。
nodetool upgradesstables
その後 clearsnapshot を実行することで、スナップショットが正常に削除されます。

なお、Linux環境の場合には上記の問題は発生しません。

スナップショットデータによる復旧(リストア)

スナップショットによりデータを退避していた場合、以下の手順で、スナップショット時点に復旧(リストア)することが可能です。

  1. Cassandra を停止
  2. commitlog(例:/var/lib/cassandra/commit_log)のファイルを削除
  3. SSTableを削除(/var/lib/cassandra/data/default/(カラムファミリー名)/ の各dbファイルを削除)
  4. スナップショットの各dbファイルを/var/lib/cassandra/data/default/(カラムファミリー名)にコピー。
  5. Cassandra を起動

«  Cassandra のバージョンアップ   ::   コンテンツ   ::   Cassandra の運用  »