Чи потрібно запускати ремонт нодетолу на кожному вузлі?


12

Чи потрібно запускати nodetool repairкожен вузол у кластері, чи потрібно запустити його лише на одному вузлі, а звідти Кассандра подбає про інше?

Відповіді:


9

Переглядаючи документацію, мені важко знайти посилання на це, але коротка відповідь - «так», яку потрібно запустити nodetool repairна кожному вузлі кластеру. Найближче, що я можу знайти, - це документація з ремонту вузлів, яка говорить про те, що не слід запускати ремонт на більш ніж одному вузлі кластеру одночасно.

Ви також можете запустити ремонт із -prпрапором, який обмежує операцію відновлення до першого діапазону токенів, за який відповідає поточний вузол. Це зменшує дублювання роботи при запуску на решти вузлів.


Тож якщо я запускаюся з -prкожного вузла, чи охоплюватиме це все простір клавіш?
2rs2ts

1
@ 2rs2ts Так, якщо запустити його -prна кожному вузлі, він охопить весь простір клавіш.
Аарон

1
Гаразд ... Тоді я припускаю, що ви повинні запускати його на кожному вузлі, але ви можете заощадити час із -prпрапором.
2rs2ts

1
До інших відповідей я додав деякі джерела. Це джерело досить зрозуміло: "Жорсткою вимогою до частоти поточного ремонту є значення gc_grace_seconds. Виконайте операцію відновлення принаймні один раз на кожному вузлі протягом цього періоду часу." Ремонт вузлів
Carl G

5

Як вона поводиться, залежить від вашої конфігурації, якої версії Cassandra ви використовуєте та від того, як запускаєте команду відновлення.

Якщо ви просто запустите nodetool repairодин вузол у кластері, він відновить усі дані (діапазони токенів), за які відповідає вузол, а також інші вузли, які відповідають за ці дані.

Так, наприклад, якщо ви повинні виконати nodetool repairкоманду на одному вузлі в заданому кластері:

  • Якщо ви використовуєте кластер з трьома вузлами з коефіцієнтом реплікації трьох, всі вузли володітимуть усіма даними, і таким чином буде виконано ремонт для всіх вузлів.
  • Якщо ви працюєте з кластером шести вузлів з коефіцієнтом реплікації 2, дані будуть відновлені лише на двох із шести вузлів. Ремонт потрібно буде розпочати на ще двох з решти чотирьох вузлів.

З огляду на це, можна визначити, які хости та центри обробки даних виконують ремонт із використанням прапорів -hostsта -dcпрапорів. Крім того , якщо ви використовуєте -prпрапор (який буде тільки вибрати перший маркер діапазону вузол відповідає за) вам доведеться працювати nodetool repair -prна всіх вузлах кластера.

Ще один прапор, який слід пам’ятати, - це -incпрапор, який був включений до Кассандри 2.1. Ця опція відновить лише нові дані (дані, які раніше не ремонтувалися). Будьте обережні, покладаючись на це, особливо якщо ви часто видаляєте дані. ( докладніше про це )

Щось ще потрібно пам’ятати, що ремонт за замовчуванням у Кассандрі може бути різним. Станом на Cassandra 2.1, коли він працює, nodetool repairвін за замовчуванням виконує повний послідовний ремонт. Ви хочете подивитися, що робить ваша версія.

Детальніше по темі:

https://www.datastax.com/dev/blog/repair-in-cassandra


2
Єдина добра відповідь тут
руруський

2

Ні, не потрібно запускати кожен окремий вузол. nodetool repairпрацює на наборі вузлів, що чітко зазначено в документації .

Ви можете обмежити вузли або частину даних, за якими потрібно запустити ремонт. Наприклад, ви можете надати -prпараметр для діапазону учасників, діапазон, за який відповідає вузол, але це потрібно буде виконувати на цілому кластері. Але якщо ви вибрали -local, то вузли в локальному центрі обробки даних вузла будуть відремонтовані.


4
Запуск nodetool repairна одному вузлі недостатній для відновлення всіх реплікуваних даних на всіх вузлах у всіх конфігураціях. Запуск nodetool repairна одному вузлі буде відновити лише дані, реплікувані на цьому вузлі. (Додавання -prпараметра обмежує відновлення даних, для яких цей вузол є першою реплікаю.) Але якщо у вашому кластері є дані, які не реплікуються на цьому вузлі, вам потрібно запустити nodetool repairдодаткові вузли.
Карл Г

2
"Якщо параметр -pr не вказаний, Cassandra відновлює всі діапазони реплік, які підпадають під відповідальність вузла." Документи з ремонту nodetool (тобто не відновлюють дані, за які цей вузол не несе відповідальності за реплікацію.) "Важкою вимогою до частоти поточного ремонту є значення gc_grace_seconds. Виконайте операцію відновлення принаймні один раз на кожному вузлі протягом цього періоду часу." Ремонт вузлів
Carl G
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.