Les sauvegardes sont des fonctionnalités incroyables, surtout lorsque vous travaillez avec des environnements critiques de données. Dans Apache Cassandra, nous pouvons créer des sauvegardes des données de base de données stockées sous forme de fichiers SSTABLE. Vous pouvez ensuite utiliser les fichiers de sauvegarde pour restaurer la base de données dans le cas de la perte de données, du nœud ou de l'échec de la partition. Les sauvegardes peuvent également être utilisées pour reproduire la base de données dans une autre machine, en supprimant la nécessité de recréer la structure à partir de zéro.
Cassandra prend en charge deux principaux types de sauvegardes:
Dans ce tutoriel, nous nous concentrerons sur les sauvegardes instantanées. Tout d'abord, nous apprenons comment nous pouvons initialiser et créer les sauvegardes de base de données stockées dans un cluster Apache Cassandra.
Plongeons-nous dans.
Que sont les instantanés?
Dans le contexte d'un cluster Apache Cassandra, un instantané fait référence à une copie des fichiers SSTABLE d'une table à un moment précis. La table SSTABLE ou triée est un format de fichier qu'Apache Cassandra utilise pour stocker les données en mémoire dans des memtables pour un accès rapide. Les fichiers SSTABLE sont immuables et sont supprimés ou fusionnés avec de nouveaux fichiers SSTABLE à mesure que les données changent.
Les instantanés à Cassandra peuvent être émis manuellement par l'utilisateur ou automatisés en activant la fonctionnalité dans les fichiers de configuration.
Configuration d'un exemple de données pour illustrer les instantanés dans Cassandra
Avant d'illustrer comment effectuer les instantanés à Cassandra, créons des exemples de données pour montrer comment créer des instantanés.
Commençons par créer un instantané.
Cassandra @ CQLSH> Créer un instantané de l'espace Keyspace
… Avec réplication = 'class': 'Simplestrategy', 'réplication_factor': 1;
La requête précédente crée un espace de touche avec le facteur de simplestrate et de réplication de 1.
Nous pouvons ensuite passer à cet espace de touche et créer deux tables:
Cassandra @ CQLSH> Utilisez des instantanés;
Ensuite, créez un tableau des utilisateurs comme suit:
Cassandra @ CQLSH: instantané> Créer des utilisateurs de table (
… Id int,
… Texte du nom d'utilisateur,
… Texte par e-mail,
… Clé primaire (ID)
…);
Nous pouvons également créer une autre table qui est appelée avec une structure similaire:
Cassandra @ CQLSH: instantanée> Créer une table Userst_Copy (
… Id int,
… Texte du nom d'utilisateur,
… Texte par e-mail,
… Clé primaire (ID)
…);
Enfin, nous pouvons ajouter quelques exemples de données à la table comme indiqué:
Insérer dans les utilisateurs (id, nom d'utilisateur, e-mail) VALEURS (0, «username1», «user1 @ mail.co');
Insérer dans les utilisateurs (id, nom d'utilisateur, e-mail) VALEURS (1, «username2», «user2 @ mail.pour');
INSERT IN USERS_COPY (ID, nom d'utilisateur, e-mail) Valeurs (0, «Username1», «User1 @ Mail.co');
INSERT IN USERS_COPY (ID, nom d'utilisateur, e-mail) VALEURS (1, 'Username2', 'user2 @ mail.pour');
Nous pouvons ensuite interroger les tables comme suit:
Cassandra @ CQLSH: instantané> SELECT * dans les utilisateurs;
Cassandra @ CQLSH: instantané> SELECT * FROM USERS_COPY;
Sortir:
Configurez le cluster Cassandra pour les instantanés
Avant de créer des instantanés, il est bon de s'assurer que la création automatique des instantanés est désactivée. Modifier la Cassandra.Fichier YML et définir la valeur suivante:
auto_snapshot: faux
Il est également recommandé de désactiver le compactage automatique avant la création d'instantané. Dans la Cassandra.Fichier YML, définissez la valeur suivante:
snapshot_before_compaction: false
Une fois les paramètres donnés prêts, redémarrez votre cluster Cassandra pour appliquer les modifications.
Prendre des instantanés de tous les espaces de clés
Lors de la création manuelle d'instantanés à Cassandra, nous utilisons la commande nodetool. Vous pouvez exécuter la commande suivante:
$ nodetool Aide Snapshot
Pour afficher les options de commande disponibles.
Pour prendre un instantané de tous les espaces de touches dans le cluster Cassandra, nous pouvons exécuter la commande suivante:
$ instantané Nodetool
La commande doit renvoyer un message comme indiqué:
Par défaut, Cassandra crée un instantané avec le nom de l'horodatage actuel.
Pour spécifier le nom de l'instantané, vous pouvez utiliser l'option -T comme indiqué dans la commande suivante:
$ Nodetool Snapshot -T Backups
Cela crée un instantané de tous les espaces de touches du cluster et le stockent dans le répertoire des sauvegardes.
Prendre un instantané d'un seul espace de clés
Vous pouvez également prendre une sauvegarde d'un seul espace de touche dans le cluster en spécifiant le nom de l'espace de clé. Par exemple, pour prendre un instantané de l'espace de touche instantané que nous avons créé plus tôt, nous pouvons exécuter la commande suivante:
$ nodetool instantané -t snapshotting_backup snapshotting
Cassandra crée un répertoire instantané pour chaque table dans l'espace de touche spécifié. Par exemple, comme l'espace de clé «instantané» contient deux tables, Cassandra crée un répertoire instantané pour chacun.
Par défaut, Cassandra stocke les instantanés dans le répertoire / var / lib / Cassandra / Data.
$ ls -la / var / lib / cassandra / data / snapshot /
Vous devriez voir des répertoires de chaque table dans l'espace de clé.
À l'intérieur de chaque fichier, vous trouverez les autres fichiers et répertoires comme indiqué:
Prendre un instantané d'une seule table dans un espace de clé
Parfois, vous voudrez peut-être prendre un instantané d'une table spécifique dans un espace de clés donné. Pour cela, vous pouvez utiliser l'option table suivie du nom du tableau que vous souhaitez sauvegarder.
Par exemple, pour prendre un instantané de la table USERS_COPY dans l'espace de Keyspace «Snaphot», nous pouvons exécuter la commande suivante:
$ nodetool instantané - T-Table Users_copy -t UC_SNAP Snapshotting
La commande crée un instantané de la table USERS_COPY et le stocker sous le répertoire UC_SNAP.
Énumération instantanée
Pour afficher les instantanés disponibles dans le cluster, utilisez la commande listSnapshot comme indiqué:
$ nodetool listsnapshots
Vous devriez obtenir une liste de tous les instantanés et des détails disponibles tels que le nom d'instantané, auquel ils appartiennent, le nom de famille de la colonne, la taille sur le disque et la taille réelle.
Détails instantanés:
Nom d'instantané Nom de l'espace Colonne Nom de la famille True Taille Taille sur le disque
UC_SNAP SNOPSHOTting Users_Copy 0 octets 5.87 Kib
1661397218984 Colonnes System_Schema 0 octets 12.51 Kib
1661397218984 Types System_schema 0 octets 15.03 Kib
1661397218984 Index System_schema 0 octets 15.15 kib
1661397218984 System_Schema Keyspaces 0 octets 5.81 Kib
1661397218984 System_schema Dropped_Columns 0 octets 15.63 Kib
1661397218984 System_schema Aggrégats 0 octets 15.4 kib
1661397218984 System_schema Triggers 0 octets 15.15 kib
1661397218984 TABLES SYSTEM_SCHEMA 0 octets 10.27 kib
1661397218984 Instantané utilisateurs 0 octets 5.86 Kib
1661397218984 Instantané USERS_COPY 0 octets 5.87 Kib
instantanés d'instantanés d'instantané utilisateurs 0 octets 5.86 Kib
instantanément_backup Snapshotting Users_copy 0 octets 5.87 Kib
sauvegarde des instantanés utilisateurs 0 octets 5.86 Kib
sauvegardes instantanés utilisateurs_copie 0 octets 5.87 Kib
1661397899477 Instantané USERS_COPY 0 octets 5.87 Kib
Total TreediskspaceUsed: 0 octets
Conclusion
Dans cet article, vous avez appris comment fonctionne SNOPSHOTTING dans Apache Cassandra. Vous avez également appris à prendre des instantanés d'espaces de clés, de tables spécifiques dans un espace de clés, et plus.
Merci d'avoir lu!