Ответ 1
Commitlogs неправильно очищены в версиях cassandra с 1.1.0 до 1.1.4. Это открытая проблема. Пожалуйста, обратитесь к следующему билету jira.
Я использую встроенную Кассандру. Когда я выключаю и перезапускаю данные службы 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");
Итак, есть ли способ вручную сбросить данные в Cassandra без использования nodetool?
Изменить 1:
После нескольких часов попыток я теперь могу запустить nodetool (вместо добавления jmx-конфигураций в код, который я добавил в конфигурации отладки Eclipse, и он сработал). Теперь я выполнил команду слива, и данные были правильно сброшены на диск. Итак, теперь мой вопрос: почему данные не правильно очищены? Каждый раз, когда я перезапускаю службу Cassandra, последние изменения ушли.
Commitlogs неправильно очищены в версиях cassandra с 1.1.0 до 1.1.4. Это открытая проблема. Пожалуйста, обратитесь к следующему билету jira.
Как вы останавливаете и запускаете сервер Cassandra? Призыв stopServer на демоном Cassandra должен очищать любые записи в журнале фиксации. Поток будет продолжать выполнять некоторую обработку даже после возвращения метода, поэтому, если вы убиваете JVM после stopServer(), вы можете не записывать данные.
Скорее всего, из-за настроек вашего блога. Если вы используете периодический режим, попробуйте уменьшить окно синхронизации или пакет использования. Пакет сделает записи немного медленнее.
https://github.com/apache/cassandra/blob/trunk/conf/cassandra.yaml#L231
Возможно, флеш выпущен, но не работает. Промывка должна регистрироваться в журналах. Убедитесь, что вы не смываете. Если вы покраснели, и он не работает, должно быть некоторое указание на то, почему сброс не удалось.