Процедура восстановления после неудачной начальной загрузки Cassandra

Сценарий. В кластер Cassandra добавлен новый узел. Об узле сплетничали, ему был назначен диапазон токенов, но по ошибке Cassandra была отключена вручную с помощью «service stop cassandra» до того, как началась какая-либо потоковая передача от пиров. Мы также никогда не видели узел в статусе UJ. После перезапуска этого узла мы видим его в режиме UN, и файлы журнала фиксации увеличиваются, но не так много данных в каталоге данных. На одном из наших КС RF=1.

Вопрос. Как лучше всего исправить это? Задача состоит в том, чтобы не потерять данные из пространства ключей RF=1 и обеспечить правильную работу потоковой передачи данных на новый узел.


person Dmitry Buzolin    schedule 13.06.2017    source источник


Ответы (1)


Вы можете добавить новый узел двумя способами:

  1. Установите для auto_bootstrap нового узла значение true и присоединитесь к кластеру.
  2. Установите для auto_bootstrap нового узла значение false и присоединитесь к кластеру. Вручную выполните восстановление для потоковой передачи данных и исправления реплик в узле.

После того, как вы добавили новый узел. Ваши старые узлы будут иметь старые токены и некоторые старые данные, которые не будут удалены до тех пор, пока вы не выполните очистку старых узлов после успешного добавления нового узла.

В вашем случае вы по ошибке остановили новый узел посередине. Таким образом, вы можете выполнить следующие шаги, чтобы исправить реплики и проверить статус вашего nodetool, чтобы проверить, распределяется ли нагрузка на новый узел:

  1. Сделайте полный ремонт. (В случае Cassandra 2.2 и выше по умолчанию выполняется добавочное восстановление. Поэтому проверьте и выполните полное восстановление, а не добавочное восстановление)
  2. Убедитесь, что данные о состоянии nodetool передаются в потоковом режиме, а нагрузка распределяется на новый узел.
person Shoban Sundar    schedule 13.06.2017
comment
Ремонт здесь очень важен. Если выполнить перестройку nodetool, данные для пространств ключей с RF=1 не будут передаваться на новый узел. - person Dmitry Buzolin; 29.06.2017