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