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

«  Cassandra のクラスタ構築   ::   コンテンツ   ::   Cassandra の参考情報  »

Cassandra の運用

ここでは Cassandra の運用方法を説明します。

データ(keyspace)の削除

  • 設定例

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

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

    クラスタ名

    Test Cluster

    ホストのIPアドレス

    localhost

    ホストのポート番号

    9160

    キースペース

    default

  1. Cassandra を起動します。

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

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

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

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

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

    connect localhost/9160;
    
  4. コンソールに「Connected to: “Test 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:/ > C:/apache-cassandra-1.1.4/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 c:\apache-cassandra-1.1.4\data\system\Versions\system-Versions-he-3-Data.db (247 bytes) for commitlog position ReplayPosition(segmentId=42805933509718, position=544)

スナップショット

Cassandra のデータをバックアップするには、nodetoolのsnashotコマンドでスナップショットを取得することが必要です。
ただし、 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」プロパティで指定された
ディレクトリの配下に格納されます。詳細は以下を参照してください。

以下、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 (任意のスナップショット名)
    

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

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

  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 を運用しているサーバ上の時計を変更する等の操作をした場合データの不整合が発生しデータが破損する可能性があります。
また、 Cassandra に格納するデータの時刻は Cassandra が実行されているサーバ上ではなく、 Cassandra へ接続するアプリケーション側にて設定する時刻が利用されます。
その為、 intra-mart Accel Platform が動作する環境及び Cassandra が実行するサーバ上の時計は全て時刻が合っている必要があります。
時刻の統一を行うため、ntpサーバの利用を検討下さい。

«  Cassandra のクラスタ構築   ::   コンテンツ   ::   Cassandra の参考情報  »