восстановление с помощью снимков AWS EBS на отдельном кластере - PullRequest
1 голос
/ 28 июня 2019

У меня есть кластер с 3 узлами - скажем cluster1 на экземплярах AWS EC2.Кластер запущен и работает, сделал снимок тома клавиатуры.

Теперь я хочу восстановить несколько таблиц / пространств ключей из томов моментальных снимков, поэтому я создал еще один кластер (например, cluster2) и подключил тома моментальных снимков к узлам ec2 нового кластера (такое же количество узлов).Cluster2 не запускается, поскольку системное пространство ключей в снятом снимке имело имя кластера как cluster1, а кластер, на котором он восстанавливается, это cluster2.Как мне сделать восстановление в этом случае?Я не хочу вносить какие-либо изменения в существующий кластер.

Кроме того, когда я делаю восстановление, мне нужно подумать о диапазонах маркеров для сопоставления старого и нового кластера?

1 Ответ

0 голосов
/ 01 июля 2019

Перед запуском кластера 2 важно убедиться, что ни один из IP-адресов кластера 1 не включен в начальный список кластера 2, чтобы гарантировать, что они не будут знать между ними.Также, чтобы удалить из пути data_file_directories (как определено в cassandra.yaml), следующие каталоги:

  • system
  • system_auth
  • system_distributed
  • system_traces

system_schema не следует трогать, так как он содержит определение схемы пространств клавиш и таблиц.

Запустите кластер,один узел за раз;первый узел должен включать свой собственный IP-адрес в начале начального списка;Это будет одноразовое изменение, и оно должно быть удалено после того, как кластер запущен и работает.

В этот момент у вас должен быть отдельный кластер с информацией и структурой исходного кластера навремя, когда был сделан снимок.Чтобы проверить это, выполните nodetool gossipinfo, и в списке должны быть указаны только узлы cluster2, войдите в cqlsh describe keyspaces, чтобы получить список всех ваших пространств ключей, а выполнение запросов вашего приложения должно получить ваши данные.Вы заметите, что Cassandra уже сгенерировала системные клавиши *, а также рассмотрела распределение токенов.

Следующим шагом является обновление имени восстановленного кластера в каждом из узлов:

  1. Вход в cqlsh
  2. Выполнение UPDATE system.local SET cluster_name = 'cluster2' where key='local';
  3. Выход из cqlsh
  4. Выполнение nodetool flush
  5. Выполнение nodetool drain
  6. отредактируйте файл cassandra.yaml, обновите cluster_name с именем 'cluster2'
  7. , перезапустите службу cassandra
  8. , дождитесь сообщения узла как НОРМАЛЬНОГО с nodetool status или nodetool netstats
  9. повторите с другим узлом

На этом этапе у вас будет 2 независимых кластера с другим именем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...