1

Скажем, у меня есть кластер из трех узлов с (для простоты) коэффициент репликации 1. Назовем узлы A, B и C.Будет ли ремонт «nodetool» также ремонтом машин, содержащих данные, которые они не имеют в кольце?

В соответствии с кольцом ключ раздела X должен храниться на A Однако из-за восстановления базы данных данные для ключа раздела X оказались на узле B (а A вообще не хранит X).

Вопрос: Если я выпущу nodetool repair, он удостоверится, что ключ раздела X заканчивается на A?

Я понимаю, что реальным способом восстановления базы данных было бы использовать что-то вроде sstableloader, однако из-за непредвиденных обстоятельств выполнение вышеуказанного может быть для меня более легким решением (если оно работает!).

ответ

1

Вы не можете использовать ремонт кластеров с коэффициентом репликации 1. Для Cassandra просто не нужно восстанавливать данные по узлам, если каждому узлу принадлежит только собственный диапазон токенов. Использование sstableloader было бы более чистым решением в этом случае.

+0

Я вижу. Таким образом, ремонт не проверяет данные против каждого другого узла? – Ztyx

+0

Он делает, и это не так. Позвольте мне указать вам https://cassandra-zone.com/understanding-repairs/#what-should-be-repaired:523f18cb3f40e9b0ea1f0e2d6567ec75 и, пожалуйста, дайте мне знать, если я смогу уточнить –

+0

Спасибо Stefan. Я прочитал статью. Здорово! Однако, насколько я понимаю, если каждый ремонт основан на диапазоне токенов, ремонт будет вычислять только деревья merkle для узлов, содержащих реплики для этого диапазона токенов? То есть, ответ всегда «это не так». При каких обстоятельствах проверка ремонта, если какие-либо другие узлы, не являющиеся репликами, имеют данные, которые они не должны удерживать? – Ztyx