Відповіді:
Переглядаючи документацію, мені важко знайти посилання на це, але коротка відповідь - «так», яку потрібно запустити nodetool repairна кожному вузлі кластеру. Найближче, що я можу знайти, - це документація з ремонту вузлів, яка говорить про те, що не слід запускати ремонт на більш ніж одному вузлі кластеру одночасно.
Ви також можете запустити ремонт із -prпрапором, який обмежує операцію відновлення до першого діапазону токенів, за який відповідає поточний вузол. Це зменшує дублювання роботи при запуску на решти вузлів.
-prна кожному вузлі, він охопить весь простір клавіш.
-prпрапором.
Як вона поводиться, залежить від вашої конфігурації, якої версії Cassandra ви використовуєте та від того, як запускаєте команду відновлення.
Якщо ви просто запустите nodetool repairодин вузол у кластері, він відновить усі дані (діапазони токенів), за які відповідає вузол, а також інші вузли, які відповідають за ці дані.
Так, наприклад, якщо ви повинні виконати nodetool repairкоманду на одному вузлі в заданому кластері:
З огляду на це, можна визначити, які хости та центри обробки даних виконують ремонт із використанням прапорів -hostsта -dcпрапорів. Крім того , якщо ви використовуєте -prпрапор (який буде тільки вибрати перший маркер діапазону вузол відповідає за) вам доведеться працювати nodetool repair -prна всіх вузлах кластера.
Ще один прапор, який слід пам’ятати, - це -incпрапор, який був включений до Кассандри 2.1. Ця опція відновить лише нові дані (дані, які раніше не ремонтувалися). Будьте обережні, покладаючись на це, особливо якщо ви часто видаляєте дані. ( докладніше про це )
Щось ще потрібно пам’ятати, що ремонт за замовчуванням у Кассандрі може бути різним. Станом на Cassandra 2.1, коли він працює, nodetool repairвін за замовчуванням виконує повний послідовний ремонт. Ви хочете подивитися, що робить ваша версія.
Детальніше по темі:
Ні, не потрібно запускати кожен окремий вузол. nodetool repairпрацює на наборі вузлів, що чітко зазначено в документації .
Ви можете обмежити вузли або частину даних, за якими потрібно запустити ремонт. Наприклад, ви можете надати -prпараметр для діапазону учасників, діапазон, за який відповідає вузол, але це потрібно буде виконувати на цілому кластері. Але якщо ви вибрали -local, то вузли в локальному центрі обробки даних вузла будуть відремонтовані.
nodetool repairна одному вузлі недостатній для відновлення всіх реплікуваних даних на всіх вузлах у всіх конфігураціях. Запуск nodetool repairна одному вузлі буде відновити лише дані, реплікувані на цьому вузлі. (Додавання -prпараметра обмежує відновлення даних, для яких цей вузол є першою реплікаю.) Але якщо у вашому кластері є дані, які не реплікуються на цьому вузлі, вам потрібно запустити nodetool repairдодаткові вузли.
-prкожного вузла, чи охоплюватиме це все простір клавіш?