更改cassandra中的commitlog目录

时间:2017-02-06 07:04:58

标签: cassandra cassandra-2.1

目前,commitlog目录指向Directory1。我想改变它不同的目录D2。迁移应该如何?

2 个答案:

答案 0 :(得分:3)

这就是我们这样做的方式。我们有一个与Cassandra 1.1.2对话的负载均衡客户端,每个客户端都存在于每个Cassandra节点上。

  1. 排空您的服务。
    • 等待负载均衡器移除节点。
  2. 停止本地节点上的服务以停止直接客户端 - Cassandra写入:systemctl stop <your service name>
  3. 此时不应再写入并大大减少磁盘活动:
    • iostat 2 - 磁盘活动应该接近零
    • nodetool gossipinfo
  4. 禁用Cassandra八卦协议将节点标记为死并停止Cassandra-Cassandra写道:nodetool disablegossip
  5. 将提交日志的所有内容刷新为SSTables:nodetool flush
  6. 排空节点 - 此命令比nodetool flush更重要(并且可能包括nodetool flush的所有行为):nodetool drain
  7. 停止cassandra流程:systemctl stop cassandra
  8. 修改Cassandra配置文件,例如vi /etc/cassandra/default.conf/cassandra.yaml
  9. 启动Cassandra:systemctl start cassandra
  10. 等待10-20分钟。 Tail Cassandra记录如下: tail -F /var/log/cassandra/system.log
  11. 确认响铃是健康的,然后转到下一个节点:nodetool ring
  12. 重新启动客户服务:systemctl start <your service here>
  13. 请注意,我们无需手动复制commitlog文件本身。冲洗和排水处理了这一点。然后,文件会慢慢重新出现在新的commitlog_dir位置。

答案 1 :(得分:2)

您可以更改cassandra.yaml(密钥:“commitlog_directory”)中的提交日志目录,并将所有日志复制到新目标。

https://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html#reference_ds_qfg_n1r_1k__commitlog_directory

commitlog_directory

  

存储提交日志的目录。默认位置:   包安装:/ var / lib / cassandra / commitlog Tarball   安装:install_location / data / commitlog用于最佳写入   性能,将提交日志放在单独的磁盘分区上,或   (理想情况下)与数据文件目录中的单独物理设备。   由于提交日志仅附加,因此可以使用HDD   这个目的。