intra-mart Accel Platform / Cassandra管理员指南

第8版 2014-04-01

«  7. 连接到 Cassandra 的认证设定   ::   Contents   ::   9. Cassandra 的运行  »

8. Cassandra 的操作

在此,对 Cassandra 的操作方法进行说明。
本文使用【表1. Cassandra连接信息设定例子】来记述以下说明。
  • 【表1. Cassandra连接信息设定例子】

    集群名

    IMBox Cluster

    主机IP地址

    localhost

    主机端口号

    9160

    认证设定的有效化

    false

    键空间

    default

8.1. 键空间的生成方法

  1. 启动 Cassandra 。

  2. 确认 Cassandra 已启动,并启动cassandra-cli。

    • OS是Windows时,双击<%CASSANDRA_HOME%/bin/cassandra-cli.bat>。
    • OS是Linux时,使用下述命令启动。
    /usr/local/cassandra/bin/cassandra-cli
    
  3. 启动控制台后,请输入下述命令。

    connect localhost/9160;
    
  4. 请确认连接已成功,并输入下述命令。

    create keyspace default;
    
  5. 显示以下信息,可确认键空间“default”的生成已成功。

    ... schemas agree across the cluster
    

8.2. 键空间的生成方法(有认证设定时)

对 Cassandra 中在以下条件下生成键空间的步骤进行介绍。
  • 连接用户名 : aoyagi
  • 密码 : aoyagi_pwd
  • 键空间名 : imbox_keyspace
  1. 在连接认证设定 (passwd.properties)中添加密码。

    admin=admin_pwd
    user=user_pwd
    aoyagi=aoyagi_pwd
    
  2. 在访问权设定 (access.properties)中添加aoyagi可访问的键空间。

    # The magical '<modify-keyspaces>' property lists users who can modify the
    # list of keyspaces: all users will be able to view the list of keyspaces.
    <modify-keyspaces>=admin
    
    # Access to Keyspace 'default'
    default.<rw>=admin
    default.<ro>=user
    # Access to all ColumnFamily
    default.*.<rw>=admin
    default.*.<ro>=user
    
    # Access to Keyspace 'imbox_keyspace'
    imbox_keyspace.<rw>=aoyagi
    imbox_keyspace.<ro>=user
    # Access to all ColumnFamily
    imbox_keyspace.*.<rw>=aoyagi
    imbox_keyspace.*.<ro>=user
    

    警告

    • 使用了认证设定时,无法生成已在access.properties中设定的键空间以外键空间。
  3. 启动 Cassandra 。

  4. 接下来,指定认证信息并启动cassandra-cli。

    • OS是Windows时,启动命令提示,并执行下述命令。

      %CASSANDRA_HOME%/bin/cassandra-cli -u aoyagi -pw aoyagi_pwd
      
    • OS是Linux时,使用下述命令启动。

      /usr/local/cassandra/bin/cassandra-cli -u aoyagi -pw aoyagi_pwd
      

      注解

      关于认证信息的指定方法,请参照“连接认证的确认方法”。
  5. 确认连接已成功,并输入下述命令,生成“imbox_keyspace”。

    create keyspace imbox_keyspace;
    
  6. 显示以下信息,可确认键空间“imbox_keyspace”已被添加。

    ... schemas agree across the cluster
    

    注解

    构筑集群并要在多个Cassandra上生成键空间时,可在种子节点的Cassandra上生成键空间后通过执行nodetool repair命令在其他节点上也生成键空间,因此不需要在全部节点上生成键空间。

8.3. 键空间的删除方法

  1. 启动 Cassandra 。

  2. 确认 Cassandra 已启动,并启动cassandra-cli。

    cassandra-cli的启动方法如下。
    • OS是Windows时,双击<%CASSANDRA_HOME%/bin/cassandra-cli.bat>。

    • OS是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”则删除完成。

8.4. 快闪备份

Cassandra 中,数据被保存在被称为memtable的内存上。
若要将数据写入到已在cassandra.yaml的“data_file_directories”属性中设定的文件系统上的SStable,需要执行nodetool的flush命令。
未采取冗余化措施时,有可能会因为在将memtable的数据写入到SStable之前发生服务器停止而产生数据损失,因此建议定期执行Flush。
  • OS是Windows时,启动命令提示,并执行下述命令。

    %CASSANDRA_HOME%/bin/nodetool -h “想执行Flush的节点的IP地址” flush
    
  • OS是Linux时,使用下述命令启动。

    # /usr/local/cassandra/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)

8.5. 快照

若要备份 Cassandra 的数据,需要使用nodetool的snapshot命令来取得快照。
但是,由于 Cassandra 的快照只复制SStable文件,所以必须在执行快照之前,执行Flush命令。
执行Flush的步骤如下。
  • OS是Windows时,启动命令提示,并执行下述命令。

    %CASSANDRA_HOME%/bin/nodetool -h “想执行Flush的节点的IP地址” flush
    %CASSANDRA_HOME%/bin/nodetool -h “想执行操作的节点的IP地址” snapshot -t (任意快照名)
    
  • OS是Linux时,使用下述命令启动。

    # /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环境下不会发生上述问题。

8.6. 通过快照数据恢复(还原)

使用快照存档数据后,可通过下述步骤,将数据恢复(还原)到快照时间点时的数据。

  • OS为Windows时
  1. 停止 Cassandra
  2. 删除commitlog文件(例如:C:/var/lib/cassandra/commit_log)
  3. 删除SSTable(删除C:/var/lib/cassandra/data/default/(列族名)/的各db文件)
  4. 将快照的各db文件复制到C:/var/lib/cassandra/data/default/(列族名)。
  5. 启动 Cassandra
  • OS为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

«  7. 连接到 Cassandra 的认证设定   ::   Contents   ::   9. Cassandra 的运行  »