Devez-vous exécuter nodetool repair
sur chaque nœud d'un cluster, ou avez-vous seulement besoin de l'exécuter sur un nœud, et à partir de là Cassandra s'occupe du reste?
En parcourant la documentation, j'ai du mal à trouver une référence pour cela, mais la réponse courte est "oui", vous devez exécuter nodetool repair
sur chaque nœud de votre cluster. Le plus proche que je peux trouver est le documentation sur la réparation des nœuds qui suggère que vous ne devriez pas exécuter la réparation sur plus d'un nœud dans votre cluster à la fois.
Vous pouvez également exécuter réparation avec le -pr
flag, qui limite l'opération de réparation à la première plage de jetons dont le nœud actuel est responsable. Cela réduit la duplication du travail lorsqu'il est exécuté sur les nœuds restants.
Son comportement dépend de votre configuration, de la version de Cassandra que vous utilisez et de la manière dont vous exécutez la commande de réparation).
Si vous exécutez simplement nodetool repair
Sur un seul nœud dans un cluster, il réparera toutes les données (plages de jetons) dont ce nœud est responsable ainsi que les autres nœuds qui sont responsables de ces données.
Par exemple, si vous exécutez la commande nodetool repair
Sur un seul nœud dans un cluster donné:
Cela dit, il est possible de définir quels hôtes et centres de données effectuer des réparations en utilisant les indicateurs -hosts
Et -dc
. De plus, si vous utilisez l'indicateur -pr
(Qui ne choisira que la première plage de jetons dont le nœud est responsable), vous devrez exécuter nodetool repair -pr
Sur tout nœuds dans le cluster.
Un autre indicateur à garder à l'esprit est l'indicateur -inc
, Qui était inclus dans Cassandra 2.1. Cette option ne réparera que les nouvelles données (données qui n'ont pas été précédemment réparées) Soyez prudent lorsque vous vous y fiez, surtout si vous supprimez fréquemment des données. ( plus à ce sujet )
Il faut également garder à l’esprit que les réparations par défaut sont effectuées en Cassandra peut varier. À partir de Cassandra 2.1 lors de l’exécution de nodetool repair
Uniquement) il effectue une réparation séquentielle complète par défaut. Vous voudrez vérifier ce que fait votre version.
Pour plus de lecture sur le sujet:
Non, vous n'avez pas à exécuter sur chaque nœud individuel. nodetool repair
s'exécute sur un ensemble de nœuds, ce qui est clairement indiqué dans la documentation .
Vous pouvez limiter les nœuds ou la partie des données sur lesquels vous souhaitez exécuter la réparation. Par exemple, vous pouvez fournir -pr
option pour la plage de partitionnement, plage dont le nœud est responsable, mais cela devra être exécuté sur l'ensemble du cluster. Mais si vous avez choisi -local
, les nœuds du centre de données local du nœud seront réparés.