我正在使用嵌入式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