2016-12-03 4 views
1

У меня есть кластер 3-узла Кассандры и пространство ключей, созданные с replication_factor из 3.обрабатывать различные сценарии восстановления с Кассандрой 2.2

Я делаю свои резервные копии для этого ключевого пространства с nodetool snapshot. Как рекомендовано документацией Cassandra, чтобы сделать глобальную резервную копию, я запускаю ее с заданием cron на каждом узле (3 узла синхронизируются NTP). Я не использую инкрементные снимки, это всегда новый глобальный снимок.

К сожалению, у меня возникли проблемы с процессом восстановления.

Прежде всего, я установил коэффициент репликации в 3 (и QUORUM уровень согласованности операций READ и WRITE), чтобы убедиться, что мое приложение продолжает работать, даже если 1 узел не работает.

  • Мой первый сценарий на самом деле не процесс восстановления: один узел выходит из строя из-за, скажем, кто-то или что-то завершать работу виртуальной машины, что узел был запущен. Два других узла продолжают работать и получать запросы на запись/чтение. Через 24 часа мне удается перезапустить виртуальную машину первого узла, все службы и файлы все еще существуют, и я собираюсь перезапустить узел. Есть ли какие-либо действия, которые я должен выполнить до или после перезапуска?

  • Второй сценарий практически такой же, но я не смог восстановить виртуальную машину первого узла, и мне нужно переустановить все на нем, включая Cassandra. Как использовать резервную копию для повторной синхронизации этого узла? Должен ли я использовать его или Кассандра, способная пересинхронировать все без меня, чтобы что-либо восстановить? Что мне делать именно в этом случае?

  • Мой последний сценарий отличается. Я потерял все свои узлы и ничего не могу восстановить. У меня есть глобальный моментальный снимок (3 моментальных снимка, 1 для каждого узла, взятых одновременно). Каков процесс в этом случае?

Я прочитал документацию Cassandra для процесса восстановления, а у меня предпочтение простого копирования восстановления (другие слова, я лучше не использовать sstableloader). У меня возникли проблемы, когда я должен использовать команды refresh и/или repair в этих сценариях.

ответ

1

Я неприятности, чтобы понять, когда я должен использовать обновление и/или команды, ремонта в этих сценариях

Согласно documentation вы должны выполнить refresh при восстановлении данных из снимка, 2-я и 3-й сценарий.

Я полагаю, что ремонт не требуется для всех трех сценариев. Но я бы рекомендовал выполнить его, потому что это простой и полезный шаг, чтобы иметь согласованные данные только что восстановленных узлов.

Кроме того, repair является рекомендуемой частью обслуживания кластерных касс.

+0

Благодарим вас за ответ. Но в случае первого сценария, после перезапуска узла, который был выключен в течение нескольких часов или дней, должен ли я сделать что-то еще, помимо 'nodetool repair'?А для второго, следует ли использовать мой снимок с потерянного узла или Кассандра, способную повторно переконфигурировать все, используя 2 других узла? –

+0

@ TheWingman, ремонта достаточно для первого сценария, даже узел был в течение длительного времени. А для второго, Cassandra может загружать данные из других узлов (http://cassandra.apache.org/doc/latest/operating/topo_changes.html#bootstrap), но это может занять много времени по сравнению с восстановлением из snashot. –

Смежные вопросы