Sto utilizzando Cassandra incorporato. Quando si spegne e si riavvia il servizio Cassandra, i dati vengono persi. Penso che i dati decenti non siano correttamente scaricati nel disco. Così ho provato a usare nodetool per scaricare manualmente i dati e verificare se i dati sono disponibili. Ma nodetool non sembra funzionare correttamente per il servizio di Cassandra incorporato. Ottengo il seguente errore:Scarico a livello di codice su cassandra ogni volta prima che cassandra si spenga
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
Ho provato a impostare le proprietà jmx ancora sto ricevendo errore. Ho aggiunto seguenti righe al mio codice:
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");
Quindi, c'è un modo per manualmente i dati a filo a Cassandra senza utilizzare nodetool?
Edit 1:
Dopo ore di tentativi sono ora in grado di eseguire nodetool (invece di aggiungere configurazioni JMX per il codice ho aggiunto a Eclipse configurazioni di debug e ha funzionato). Ho eseguito il comando di scarico ora i dati vengono correttamente scaricati sul disco. Quindi ora la mia domanda è: perché i dati non sono stati svuotati correttamente? Ogni volta che riavvio il servizio Cassandra, le modifiche recenti non sono più disponibili.
I dati non devono essere lavati fino a quando il memtable ha raggiunto una certa dimensione. Prima di quel momento la persistenza è garantita dal commit-log che * è * svuotato al momento dell'accettazione della scrittura. – RussS
Ecco dove si trova il problema .. Nel mio caso, suppongo che i registri di commit non siano correttamente scaricati .. quando scarico i dati usando nodetool prima di chiudere il servizio, funziona, i dati sono disponibili dopo il riavvio del server. Quindi è lì un modo per scaricare i dati in modo programmatico ogni volta che il server si arresta ?? – Vijay
Penso che dovresti provare a capire perché il log di commit non sta scaricando. Dovrebbe essere costantemente in fase di scrittura e flushing a meno che tu non abbia disabilitato fsync o fsync non si comportino correttamente sul tuo sistema. Una volta risolto, non perderai i dati al riavvio e non dovrai svuotare manualmente. – RussS