Réponses:
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 la 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 la réparation avec l' -pr
indicateur, ce 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.
-pr
sur chaque nœud, il couvrira l'intégralité des espaces de clés.
-pr
indicateur.
Son comportement dépend de votre configuration, de la version de Cassandra que vous utilisez et de la façon 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.
Ainsi, par exemple, si vous exécutez la nodetool repair
commande 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 sur l'utilisation des indicateurs -hosts
et -dc
. De plus, si vous utilisez l' -pr
indicateur (qui ne choisira que la première plage de jetons dont le nœud est responsable), vous devrez exécuter nodetool repair -pr
sur tous les nœuds du cluster.
Un autre drapeau à garder à l'esprit est le -inc
drapeau, qui a été 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 la façon dont les réparations sont effectuées par défaut dans Cassandra peut varier. À partir de Cassandra 2.1 lors de son exécution, nodetool repair
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 une partie des données sur lesquels vous souhaitez exécuter la réparation. Par exemple, vous pouvez fournir une -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 choisissez -local
, les nœuds du centre de données local du nœud seront réparés.
nodetool repair
sur un seul nœud n'est pas suffisante pour réparer toutes les données répliquées sur tous les nœuds dans toutes les configurations. L'exécution nodetool repair
sur un seul nœud ne réparera que les données répliquées sur ce nœud. (L'ajout de l' -pr
option limite la réparation aux données pour lesquelles ce nœud est le premier réplica.) Mais si vous avez des données dans votre cluster qui ne sont pas répliquées sur ce nœud, vous devez alors exécuter nodetool repair
sur des nœuds supplémentaires.
-pr
sur chaque nœud, cela couvrira-t-il tout l'espace de clés?