Відповіді:
Переглядаючи документацію, мені важко знайти посилання на це, але коротка відповідь - «так», яку потрібно запустити 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
кожного вузла, чи охоплюватиме це все простір клавіш?