web-dev-qa-db-fra.com

Devez-vous exécuter la réparation nodetool sur chaque nœud?

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?

12
2rs2ts

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.

9
Aaron

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é:

  • Si vous exécutez un cluster à trois nœuds avec un facteur de réplication de trois, tous les nœuds seront propriétaires de toutes les données et les réparations seront donc effectuées pour tous les nœuds.
  • Si vous exécutez un cluster à six nœuds avec un facteur de réplication de 2, les données ne seront réparées que sur deux des six nœuds. La réparation devra être lancée sur deux autres des quatre nœuds restants.

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:

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

5
Gene

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.

2
nkzscorpion