在 Cassandra 关闭之前,每次以编程方式将数据刷新到 cassandra

2022-09-03 03:02:15

我正在使用嵌入式Cassandra。当我关闭并重新启动我的Cassandra服务数据丢失时。我认为体面的数据没有正确冲入磁盘。因此,我尝试使用nodetool手动刷新数据并检查数据是否可用。但是 nodetool 似乎不能很好地用于嵌入式 Cassandra 服务。我收到以下错误:

c:\vijay\cassandra\bin>nodetool -host 192.168.2.86 -p 7199 drain

Starting NodeTool

Failed to connect to '192.168.2.86:7199': Connection refused: connect

我尝试设置jmx属性仍然收到错误。我在代码中添加了以下行:

System.setProperty("com.sun.management.jmxremote", "true");
System.setProperty("com.sun.management.jmxremote.port", "7197");
System.setProperty("com.sun.management.jmxremote.authenticate", "false");
System.setProperty("com.sun.management.jmxremote.ssl", "false");
System.setProperty("java.rmi.server.hostname", "my ip");

那么,有没有办法在不使用nodetool的情况下手动将数据刷新到Cassandra?

编辑1:
经过数小时的尝试,我现在能够运行nodetool(而不是将jmx配置添加到我添加到Eclipse调试配置的代码中,并且它起作用)。我运行了 drain 命令,现在数据已正确刷新到磁盘。所以现在我的问题是:为什么数据没有被正确刷新?每次我重新启动Cassandra服务时,最近的更改都消失了。


答案 1

您如何停止和启动Cassandra服务器?在 Cassandra 守护程序上停止服务器的调用应该刷新对提交日志的任何未完成的写入。即使在方法返回后,线程也将继续进行一些处理,因此,如果您在stopServer()之后终止JVM,那么您可能会阻止写入数据。


答案 2

在 cassandra 版本 1.1.0 到 1.1.4 中,提交日志未正确刷新 这是一个开放问题。请参考以下吉拉门票。

提交日志在重新启动后未重放


推荐