Как повторно использовать узел cassandra после вывода из эксплуатации?

У меня был кластер с двумя узлами (узел 1 и узел 2).

После вывода из эксплуатации узла 2 я хотел использовать сервер как свежую базу данных Cassandra для других целей, но как только я перезапускаю это сообщение:

org.apache.cassandra.exceptions.ConfigurationException: этот узел был выведен из эксплуатации и не присоединится к кольцу, пока не будет установлено значение cassandra.override_decommission=true или все существующие данные не будут удалены, а узел снова не будет загружен.

Поэтому я удалил все существующие данные.

Но я не хочу, чтобы узел снова загружался (ни не присоединялся к предыдущему кольцу), а чтобы использовалась новая и чистая база данных Cassandra.

Старого узла нет в списке начальных.

Версия Кассандры: 3.9

РЕДАКТИРОВАТЬ: Я думаю, что меня неправильно поняли, извините за это. После списания хочу иметь:

  • Db1: узел 1
  • Db2: узел 2

Две разные базы данных без корреляции, полностью разделенные. Это потому, что мы хотим повторно использовать машину, на которой размещен узел node2, для развертывания базы данных Cassandra в другой среде.


person Shelen    schedule 26.10.2017    source источник
comment
Убедитесь, что cassandra не запущена. Затем удалите содержимое /var/lib/cassandra/data/*, ../commitlogs/*, and ../saved_caches/* Затем получите новую копию cassandra.yaml, cassandra-env.sh и любых других файлов свойств, которые вы могли изменить. Дайте новому узлу другое имя_кластера.   -  person LHWizard    schedule 30.10.2017


Ответы (3)


Не используйте override_decommission. Этот флаг используется только для повторного присоединения к тому же кластеру.

Вы должны удалить все файлы данных на узле (Cassandra заново создаст системные таблицы при запуске). Самое главное нужно поменять сид в cassandra.yaml. Я подозреваю, что это все же ip узла 1, поэтому вам нужно изменить его на узел 2 (сам).

person Simon Fontana Oscarsson    schedule 27.10.2017
comment
Привет спасибо! Я пропустил шаг удаления всех файлов данных, пометил ваш ответ как принятый. - person Shelen; 31.10.2017

Использовать опцию cassandra.override_decommission: true

person user6238251    schedule 27.10.2017
comment
Привет, спасибо за ответ. После запуска кассандры с опцией -D я получил это: org.apache.cassandra.exceptions.ConfigurationException: Saved cluster name **Old_Name** != configured name **New_Name** Я не хочу воссоединяться на ринге ни при каких обстоятельствах, что мне нужно отредактировать, чтобы остановить Кассандру за попытку? Спасибо. - person Shelen; 27.10.2017

Используйте эту опцию, cassandra.override_decommission=true. Кроме того, имейте в виду, что определением cluster_name является cassandra.yaml:

Имя кластера. Этот параметр предотвращает присоединение узлов одного логического кластера к другому. Все узлы в кластере должны иметь одинаковое значение.

Поэтому, чтобы быть уверенным, также используйте другое значение для параметра cluster_name в cassandra.yaml.

Попробуйте выполнить следующие действия:

  • запустить в cqlsh: UPDATE system.local SET имя_кластера = 'новое_имя', где ключ = 'локальный';
  • nodetool сбросить, чтобы сохранить данные
  • вывод из эксплуатации nodetool
  • узел остановки
  • изменить имя в cassandra.yaml
  • чистый узел sudo rm -rf /var/lib/cassandra/* /var/log/cassandra/* но я бы просто переместил этот файл в другое место, пока вы не получите желаемое состояние
  • начальный узел

Пожалуйста, проверьте 1, 2

person Horia    schedule 27.10.2017
comment
Привет, спасибо за ответ. После запуска кассандры с опцией -D я получил это: org.apache.cassandra.exceptions.ConfigurationException: Saved cluster name **Old_Name** != configured name **New_Name** Я не хочу воссоединяться на ринге ни при каких обстоятельствах, что мне нужно отредактировать, чтобы остановить Кассандру за попытку? PS: я отредактировал ОП, чтобы прояснить намерения; Я упоминаю вас @user6238251, чтобы пролить свет на эту тему. Заранее спасибо обоим. - person Shelen; 27.10.2017