Apache Cassandra está construido para garantizar una alta disponibilidad en todos los entornos. Esto significa que si un solo o varios nodos con un clúster no están disponibles, los otros nodos dentro del clúster manejarán las operaciones solicitadas.
Sin embargo, cuando los nodos no disponibles se pueden accesibles, necesitan saber qué operaciones se perdieron dentro del clúster. Por lo tanto, Apache Cassandra usa una función de pista para alertar a los nodos de todas las funciones que se perdieron sin estar disponibles. Aunque los sugerencias pueden realizar una notificación de las operaciones faltantes, no garantiza una consistencia completa de datos en todo el clúster. Esta inconsistencia puede conducir a la pérdida de datos, especialmente si un clúster activo multiplica las operaciones CRUD.
Para evitar una pérdida de datos, debe realizar las reparaciones de datos, lo que permite que los nodos sincronizen los datos a través del clúster con la información actualizada.
En este tutorial, descubrirá cómo realizar las reparaciones manualmente en el clúster de Cassandra utilizando la utilidad Nodetool.
Tipos de reparaciones en Cassandra
Cassandra admite dos tipos principales de reparaciones:
Reparaciones incrementales
Por defecto, Cassandra realiza una reparación incremental. Esta reparación solo repara los datos que han cambiado desde la reparación anterior. Esto es menos intensivo en recursos y muy útil cuando realiza regularmente las reparaciones.
Una desventaja de las reparaciones incrementales es que una vez que los datos se marcan como reparados, Cassandra no intentará repararlos nuevamente. Esto puede conducir a la pérdida de datos, especialmente si la reparación se corrompe.
Reparaciones completas
Por otro lado, las reparaciones completas son muy intensivas en recursos, especialmente en las operaciones de E/S de disco y red. Sin embargo, realizan las reparaciones de datos en el clúster, sincronizando la información correcta y actualizada.
Podríamos gastar este artículo completo en los diversos tipos de reparaciones de Cassandra y cómo Cassandra maneja las reparaciones. Sin embargo, entremos en el plato principal del artículo.
El comando de reparación de nodetool
Para realizar una reparación de datos en un clúster de Cassandra, utilizamos el comando de reparación de nodetool. La sintaxis y las opciones de comando son como se muestra:
Dependiendo del método especificado, el comando de reparación realiza una reparación completa o incremental en uno o más nodos.
Cómo realizar una reparación completa en Cassandra Cluster
En esta sección, veamos cómo podemos realizar una reparación completa en un clúster de Cassandra.
Nota: Para ilustrar mejor una reparación completa, ejecute los comandos en este tutorial en un clúster con tres o más nodos.
Paso 1: cree un espacio de tecla con un factor de replicación de 3 (o para el número de nodos disponibles).
cassandra@cqlsh> Crear desarrollo del espacio de teclado
... con replication = 'class': 'SimpleStrategy', 'Replication_Factor': 3;
Paso 2: cree una tabla y agregue una muestra de datos.
cassandra@cqlsh: desarrollo> crear tabla t (id int, nombre de texto, edad int, clave primaria (id));
Paso 3: Agregue los datos de muestra.
cassandra@cqlsh: desarrollo> insertar en t (id, nombre, edad) valores (0, 'user1', 2);
cassandra@cqlsh: desarrollo> insertar en t (id, nombre, edad) valores (1, 'user2', 3);
cassandra@cqlsh: desarrollo> insertar en t (id, nombre, edad) valores (2, 'user3', 5);
Paso 4: Obtenga datos almacenados en la tabla.
cassandra@cqlsh: desarrollo> seleccionar * de t;
Producción:
ID | Edad | nombre
----+-----+-------
1 | 3 | Usuario2
0 | 2 | Usuario1
2 | 5 | Usuario3
Paso 5: Actualice el espacio de tecla para incluir 4 réplicas.
cassandra@cqlsh: desarrollo> alter keyspace desarrollo
... con replication = 'class': 'SimpleStrategy', 'Replication_Factor': 4;
Aumentando el número de réplicas imita el funcionamiento de un nodo en el clúster bajando y volviendo a.
Aumentar el factor de replicación debería darle un mensaje para realizar una reparación de datos.
Paso 6: Realice una reparación completa de datos como:
$ Nodetool Repair -Desarrollo lleno
El comando anterior realiza una reparación completa en todas las tablas en el espacio de teclado especificado. Para reparar solo una tabla, podemos ejecutar el siguiente comando:
$ Nodetool Repair -Desarrollo lleno de T
Esto debería reparar solo la tabla "t" en el espacio de llave.
Para ver el estado de reparación, puede usar el comando tpstats:
$ nodetool tpstats
Conclusión
En este artículo, aprendió a realizar la reparación completa de Cassandra utilizando la utilidad Nodetool.
Gracias por leer!