Ответы:
Просматривая документацию, я с трудом нахожу для этого ссылку, но краткий ответ - «да», вам нужно работать nodetool repair
на каждом узле в вашем кластере. Самое близкое, что я могу найти, - это документация по восстановлению узлов, в которой предлагается, чтобы вы не запускали восстановление более чем на одном узле в кластере одновременно.
Вы также можете запустить восстановление с -pr
флагом, который ограничивает операцию восстановления первым диапазоном токенов, за который отвечает текущий узел. Это сокращает дублирование работы при запуске на оставшихся узлах.
-pr
на каждом узле, он охватит все пространство ключей.
-pr
флага.
Как это ведет себя, зависит от вашей конфигурации, какую версию Cassandra вы используете и как вы запускаете команду восстановления.
Если вы просто запустите nodetool repair
один узел в кластере, он восстановит все данные (диапазоны токенов), за которые отвечает этот узел, а также другие узлы, которые отвечают за эти данные.
Например, если вам нужно было запустить nodetool repair
команду на одном узле в данном кластере:
Тем не менее, можно определить , какие узлы и центры обработки данных для выполнения ремонтных работ на использование -hosts
и -dc
флагов. Кроме того, если вы используете -pr
флаг (который выберет только первый диапазон токенов, за который отвечает узел), вам придется работать nodetool repair -pr
на всех узлах кластера.
Еще один флаг, о котором следует помнить, это -inc
флаг, который был включен в Cassandra 2.1. Эта опция восстанавливает только новые данные (данные, которые ранее не были восстановлены). Будьте осторожны, полагаясь на это, особенно если вы часто удаляете данные. ( подробнее об этом )
Следует также помнить, что стандартные способы ремонта в Кассандре могут различаться. Начиная с Cassandra 2.1 при запуске nodetool repair
он выполняет полное последовательное восстановление по умолчанию. Вы хотите посмотреть, что делает ваша версия.
Для получения дополнительной информации по теме:
Нет, вам не нужно работать на каждом отдельном узле. nodetool repair
работает на множестве узлов, что четко указано в документации .
Вы можете ограничить узлы или часть данных, на которых вы хотите выполнить восстановление. Например, вы можете предоставить -pr
опцию для диапазона разделителя, диапазона, за который отвечает узел, но это должно выполняться на всем кластере. Но если вы выбрали -local
, то узлы в локальном центре данных узла будут восстановлены.
nodetool repair
на одном узле недостаточно для восстановления всех реплицированных данных на всех узлах во всех конфигурациях. Работа nodetool repair
на одном узле будет восстанавливать только данные, реплицированные на этом узле. (Добавление этой -pr
опции ограничивает восстановление данных, для которых этот узел является первой репликой.) Но если в вашем кластере есть данные, которые не реплицированы на этом узле, то вы должны работать nodetool repair
на дополнительных узлах.
-pr
каждым узлом, охватит ли это все пространство ключей?