У меня есть кластер 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
в этих сценариях.
Благодарим вас за ответ. Но в случае первого сценария, после перезапуска узла, который был выключен в течение нескольких часов или дней, должен ли я сделать что-то еще, помимо 'nodetool repair'?А для второго, следует ли использовать мой снимок с потерянного узла или Кассандра, способную повторно переконфигурировать все, используя 2 других узла? –
@ TheWingman, ремонта достаточно для первого сценария, даже узел был в течение длительного времени. А для второго, Cassandra может загружать данные из других узлов (http://cassandra.apache.org/doc/latest/operating/topo_changes.html#bootstrap), но это может занять много времени по сравнению с восстановлением из snashot. –