如何确定 Cassandra 节点是否已耗尽?
How do I determine whether a Cassandra node was drained?
我想知道 Cassandra 节点是否 运行ning(我知道该怎么做,我可以检查 java
进程是否 运行ning,这是该服务器上唯一使用 java
的服务器),如果不使用 运行ning,节点在停止之前是否已正确耗尽。
所以问题是:如何确定 nodetool drain
是否针对当前已停止的节点 运行?
这可能与应该为空的提交日志有关,但我不太确定如何检查它。我正在寻找一种在控制台中执行此操作的方法。
更新:
根据 Pandey 的回答,我的提交日志文件如下所示:
首先是提交日志在 /etc/cassandra/cassandra.yaml
文件中的位置:
commitlog_directory: /var/lib/cassandra/commitlog
以及该文件夹的内容:
alexis@cass1:~$ ls -l /var/lib/cassandra/commitlog
total 65536
-rw-r--r-- 1 cassandra cassandra 33554432 Feb 22 17:15 CommitLog-6-1550882527529.log
-rw-r--r-- 1 cassandra cassandra 33554432 Feb 22 17:15 CommitLog-6-1550882527530.log
(1024 × 1024 × 32 = 33554432 — 正好是 32Mb)
"nodetool drain" 只是将所有内存表从节点刷新到磁盘上的 SSTables。 Cassandra 停止监听来自客户端和其他节点的连接。一旦你启动了 drain 命令节点,如果你从 "nodetool status" 中检查,则节点将显示来自其他节点的 DN 状态,八卦也不会发生。您需要在 运行 nodetool 耗尽后重新启动 Cassandra。
对于Commitlog,您需要先检查cassandra.yaml中的提交日志路径,然后才能检查。
我想知道 Cassandra 节点是否 运行ning(我知道该怎么做,我可以检查 java
进程是否 运行ning,这是该服务器上唯一使用 java
的服务器),如果不使用 运行ning,节点在停止之前是否已正确耗尽。
所以问题是:如何确定 nodetool drain
是否针对当前已停止的节点 运行?
这可能与应该为空的提交日志有关,但我不太确定如何检查它。我正在寻找一种在控制台中执行此操作的方法。
更新:
根据 Pandey 的回答,我的提交日志文件如下所示:
首先是提交日志在 /etc/cassandra/cassandra.yaml
文件中的位置:
commitlog_directory: /var/lib/cassandra/commitlog
以及该文件夹的内容:
alexis@cass1:~$ ls -l /var/lib/cassandra/commitlog
total 65536
-rw-r--r-- 1 cassandra cassandra 33554432 Feb 22 17:15 CommitLog-6-1550882527529.log
-rw-r--r-- 1 cassandra cassandra 33554432 Feb 22 17:15 CommitLog-6-1550882527530.log
(1024 × 1024 × 32 = 33554432 — 正好是 32Mb)
"nodetool drain" 只是将所有内存表从节点刷新到磁盘上的 SSTables。 Cassandra 停止监听来自客户端和其他节点的连接。一旦你启动了 drain 命令节点,如果你从 "nodetool status" 中检查,则节点将显示来自其他节点的 DN 状态,八卦也不会发生。您需要在 运行 nodetool 耗尽后重新启动 Cassandra。
对于Commitlog,您需要先检查cassandra.yaml中的提交日志路径,然后才能检查。