Что происходит при запуске ‘nodetool rebuild’ на узле в том же центре обработки данных?

#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). Я удалил данные только одного пространства ключей, которое я создал сам. Будет ли перестроение работать в этом случае.