我正在使用嵌入式Cassandra。当我关闭并重新启动Cassandra时,服务数据丢失。我认为体面的数据没有适当地刷入磁盘。所以我尝试使用nodetool手动刷新数据并检查数据是否可用。但是,对于嵌入式Cassandra服务,nodetool似乎不能正常工作。我收到以下错误:在Cassandra关闭之前,每次都以程序方式将数据刷新到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?
编辑1:
经过努力我小时我现在能够nodetool运行(而不是增加JMX配置,代码加我到Eclipse调试配置和它的工作)。我运行了排水命令,现在数据正确刷新到磁盘。所以现在我的问题是:为什么数据没有适当刷新?每当我重新启动Cassandra服务时,最近的更改都消失了。
直到memtable达到一定大小后才能刷新数据。在那段时间之前,持久性是通过写入确认时刷新的提交日志来保证的。 – RussS
这就是问题所在。就我而言,我猜提交日志没有正确刷新..当我关闭服务之前使用nodetool刷新数据时,它工作正常,服务器重新启动后数据可用。每当服务器出现故障时,以任何方式编程刷新数据? – Vijay
我认为你应该尝试弄清楚为什么提交日志不会冲洗。除非禁用fsync或fsync在您的系统上无法正常运行,否则应该不断写入和刷新。一旦解决了这个问题,您不会在重新启动时丢失数据,也不必手动刷新。 – RussS