#cassandra #scylla
#cassandra #сцилла
Вопрос:
Это может показаться глупым, но я удалил все в каталоге данных (/var / lib / scylla/data/ *) на одном из узлов. Теперь, чтобы вернуть данные, я могу запустить nodetool repair
or nodetool rebuild
.
У меня путаница в отношении rebuild
. Я читал, что он в основном используется при создании нового центра обработки данных. Итак, в моем случае, если я запущу nodetool rebuild
на своем узле в существующем кластере, что произойдет? Будет ли он просто копировать данные из реплик для всех диапазонов токенов, за которые он отвечал? или это каким-то образом нарушит диапазон токенов и приведет к потере данных?
Я понимаю, что nodetool repair
это создаст согласованную копию данных. Но предположим, что у меня нет строгих требований к согласованности и я просто хочу вернуть данные на свой узел как можно быстрее. Какой вариант более безопасен repair
или rebuild
.
Ответ №1:
Это зависит от состояния узла.
Если вы удалили все, включая системные таблицы, узел попытается выполнить автоматическую загрузку, но потерпит неудачу, потому что он не может просто повторно присоединиться без replace_address
флага. По этой причине вы не сможете запустить a repair
, поскольку узел не будет запущен.
Вы можете запустить, только rebuild
если узел добавлен обратно в кластер с auto_bootstrap: false
помощью . Это проблематично, потому что в этом состоянии узел будет принимать запросы на чтение, даже если у него нет данных. Это означает, что если чтения выполняются с ONE
LOCAL_ONE
согласованностью или, никаких данных возвращено не будет. Приветствия!
Комментарии:
1. У меня есть все мои другие пространства ключей (управляемые пространства ключей scylla db). Я удалил данные только одного пространства ключей, которое я создал сам. Будет ли перестроение работать в этом случае.