Respuestas:
Al revisar la documentación, me cuesta encontrar una referencia para esto, pero la respuesta breve es "sí", debe ejecutar nodetool repair
en cada nodo de su clúster. Lo más cercano que puedo encontrar es la documentación sobre la reparación de nodos que sugiere que no debe ejecutar la reparación en más de un nodo en su clúster a la vez.
También puede ejecutar la reparación con el -pr
indicador, que limita la operación de reparación al primer rango de token del que es responsable el nodo actual. Esto reduce la duplicación de trabajo cuando se ejecuta en los nodos restantes.
-pr
en cada nodo, cubrirá todo el espacio de teclas.
-pr
bandera.
Su comportamiento depende de su configuración, qué versión de Cassandra usa y cómo ejecuta el comando de reparación.
Si solo se ejecuta nodetool repair
en un solo nodo en un clúster, reparará todos los datos (rangos de tokens) de los que ese nodo es responsable y también los otros nodos que son responsables de esos datos.
Entonces, por ejemplo, si tuviera que ejecutar el nodetool repair
comando en un solo nodo en un clúster dado:
Dicho esto, es posible definir qué hosts y centros de datos realizar reparaciones al usar los indicadores -hosts
y -dc
. Además, si usa el -pr
indicador (que solo seleccionará el primer rango de tokens del que es responsable el nodo), deberá ejecutarlo nodetool repair -pr
en todos los nodos del clúster.
Otra bandera a tener en cuenta es la -inc
bandera, que se incluyó en Cassandra 2.1. Esta opción solo reparará datos nuevos (datos que no han sido reparados previamente). Tenga cuidado al confiar en esto, especialmente si elimina datos con frecuencia. ( más sobre esto )
Otra cosa a tener en cuenta es que la forma predeterminada en que se realizan las reparaciones en Cassandra puede variar. A partir de Cassandra 2.1 cuando se ejecuta solo nodetool repair
, realiza una reparación secuencial completa de forma predeterminada. Querrá consultar qué hace su versión.
Para más lectura sobre el tema:
No, no tiene que ejecutar en cada nodo individual. nodetool repair
se ejecuta en un conjunto de nodos, que se indica claramente en la documentación .
Puede limitar los nodos o parte de los datos en los que desea ejecutar la reparación. Por ejemplo, puede proporcionar una -pr
opción para el rango del particionador, rango del cual el nodo es responsable, pero esto tendrá que ejecutarse en todo el clúster. Pero si elige -local
, los nodos en el centro de datos local del nodo serán reparados.
nodetool repair
en un solo nodo no es suficiente para reparar todos los datos replicados en todos los nodos en todas las configuraciones. La ejecución nodetool repair
en un solo nodo solo reparará los datos replicados en ese nodo. (Agregar la -pr
opción limita la reparación a los datos para los cuales este nodo es la primera réplica). Pero si tiene datos en su clúster que no se replican en este nodo, debe ejecutar nodetool repair
en nodos adicionales.
-pr
cada nodo, ¿eso cubrirá todo el espacio de claves?