Apache Cassandra est conçue pour assurer la haute disponibilité dans tous les environnements. Cela signifie que si un seul ou plusieurs nœuds avec un cluster ne sont pas disponibles, les autres nœuds du cluster géreront les opérations demandées.
Cependant, lorsque les nœuds indisponibles deviennent accessibles, ils doivent savoir quelles opérations ils ont manqué dans le cluster. Par conséquent, Apache Cassandra utilise une caractéristique d'indice pour alerter le ou les nœuds de toutes les fonctions qu'ils ont manquées bien qu'elles n'étaient pas disponibles. Bien que les conseils puissent effectuer une notification des opérations manquantes, elle ne garantit pas une cohérence complète des données à travers le cluster. Cette incohérence peut entraîner une perte de données, surtout si un cluster actif multiplie les opérations CRUD.
Pour éviter une perte de données, vous devez effectuer les réparations de données, permettant aux nœuds de synchroniser les données sur le cluster avec les informations mises à jour.
Dans ce tutoriel, vous découvrirez comment effectuer les réparations manuellement dans le cluster Cassandra en utilisant l'utilitaire Nodetool.
Types de réparations à Cassandra
Cassandra prend en charge deux principaux types de réparations:
Réparations incrémentielles
Par défaut, Cassandra effectue une réparation incrémentielle. Cette réparation ne répare que les données qui ont changé depuis la réparation précédente. C'est moins intensif en ressources et très utile lorsque vous effectuez régulièrement les réparations.
Un inconvénient des réparations incrémentielles est qu'une fois que les données sont marquées comme réparées, Cassandra ne tentera pas de la réparer à nouveau. Cela peut entraîner une perte de données, surtout si la réparation devient corrompue.
Réparations complètes
D'un autre côté, les réparations complètes sont à forte intensité de ressources, en particulier sur les opérations d'E / S de disque et de réseau. Cependant, ils effectuent les réparations de données à travers le cluster, synchronisant les informations correctes et à jour.
Nous pourrions passer cet article entier sur les différents types de réparations de Cassandra et comment Cassandra gère les réparations. Cependant, passons au cours principal de l'article.
La commande de réparation de Nodetool
Pour effectuer une réparation de données sur un cluster Cassandra, nous utilisons la commande de réparation de Nodetool. La syntaxe et les options de commande sont telles que montrées:
Selon la méthode spécifiée, la commande de réparation effectue une réparation complète ou incrémentielle sur un ou plusieurs nœuds.
Comment effectuer une réparation complète dans Cassandra Cluster
Dans cette section, regardons comment nous pouvons effectuer une réparation complète sur un cluster Cassandra.
Remarque: Pour illustrer au mieux une réparation complète, exécutez les commandes de ce tutoriel dans un cluster avec trois nœuds ou plus.
Étape 1: Créez un espace de touche avec un facteur de réplication de 3 (ou pour le nombre de nœuds disponibles).
Cassandra @ CQLSH> Créer un développement de Keyspace
… Avec réplication = 'class': 'Simplestrategy', 'réplication_factor': 3;
Étape 2: Créez une table et ajoutez un exemple de données.
Cassandra @ CQLSH: Développement> Créer un tableau T (ID INT, Nom Texte, Age int, Clé primaire (ID));
Étape 3: Ajouter un exemple de données.
Cassandra @ CQLSH: Développement> Insérer dans les valeurs t (id, nom, âge) (0, 'user1', 2);
Cassandra @ CQLSH: Développement> Insérer dans les valeurs t (id, nom, âge) (1, 'user2', 3);
Cassandra @ CQLSH: Développement> Insérer dans les valeurs t (id, nom, âge) (2, 'user3', 5);
Étape 4: Obtenez des données stockées dans le tableau.
Cassandra @ CQLSH: Développement> SELECT * FROM T;
Sortir:
ID | Âge | nom
----+-----+-------
1 | 3 | User2
0 | 2 | User1
2 | 5 | User3
Étape 5: Mettez à jour l'espace de clé pour inclure 4 répliques.
Cassandra @ CQLSH: Développement> ALTER KEYSPACE Development
… Avec réplication = 'class': 'Simplestrategy', 'réplication_factor': 4;
L'augmentation du nombre de répliques imite le fonctionnement d'un nœud dans le cluster en descendant et revenez.
L'augmentation du facteur de réplication devrait vous donner un message pour effectuer une réparation de données.
Étape 6: Effectuez une réparation complète de données comme:
$ Nodetool Repair - développement complet
La commande précédente effectue une réparation complète sur toutes les tables de l'espace de touche spécifié. Pour réparer une seule table, nous pouvons exécuter la commande suivante:
$ Nodetool Repair - Développement
Cela ne devrait réparer que le tableau «T» dans l'espace de clés.
Pour afficher l'état de réparation, vous pouvez utiliser la commande TPSTATS:
$ nodetool tpstats
Conclusion
Dans cet article, vous avez appris à effectuer la réparation complète de Cassandra en utilisant le Utility Nodetool.
Merci d'avoir lu!