Comment créer et utiliser des sauvegardes MongoDB sur Ubuntu 14.04

introduction

Aujourd’hui, de nombreux développeurs d’applications Web modernes choisissent d’utiliser une base de données NoSQL dans leurs projets, et MongoDB est souvent leur premier choix. Si vous utilisez MongoDB dans un scénario de production, il est important de créer régulièrement des sauvegardes afin d’éviter toute perte de données. Heureusement, MongoDB offre des outils de ligne de commande simples pour créer et utiliser des sauvegardes. Ce tutoriel expliquera comment utiliser ces outils.

Pour comprendre le fonctionnement des sauvegardes sans altérer vos bases de données existantes, ce didacticiel commence par vous guider dans la création d’une nouvelle base de données et l’ajout d’une petite quantité de données. Vous allez ensuite créer une sauvegarde de la base de données, puis la supprimer et la restaurer à l’aide de la sauvegarde.

Conditions préalables

Pour suivre, vous aurez besoin de:

Étape 1 - Création d’un exemple de base de données

La création d’une sauvegarde d’une base de données vide n’est pas très utile. Nous allons donc, à cette étape, créer un exemple de base de données et y ajouter des données.

Le moyen le plus simple d’interagir avec une instance de MongoDB consiste à utiliser le shell + mongo +. Ouvrez-le avec la commande + mongo +.

mongo

Une fois que vous avez l’invite MongoDB, créez une nouvelle base de données appelée * myDatabase * à l’aide de l’assistant + use +.

use myDatabase

Sortie

switched to db myDatabase

Toutes les données d’une base de données MongoDB doivent appartenir à un collection. Cependant, il n’est pas nécessaire de créer explicitement une collection. Lorsque vous utilisez la méthode + insert + pour écrire dans une collection inexistante, la collection est créée automatiquement avant l’écriture des données.

Vous pouvez utiliser le code suivant pour ajouter trois petits documents à une collection appelée * myCollection * à l’aide de la méthode + insert +:

db.myCollection.insert([
   {'name': 'Alice', 'age': 30},
   {'name': 'Bill', 'age': 25},
   {'name': 'Bob', 'age': 35}
]);

Si l’insertion est réussie, vous verrez un message qui ressemble à ceci:

Sortie d’une opération insert () réussie

BulkWriteResult({
   "writeErrors" : [ ],
   "writeConcernErrors" : [ ],
   "nInserted" : 3,
   "nUpserted" : 0,
   "nMatched" : 0,
   "nModified" : 0,
   "nRemoved" : 0,
   "upserted" : [ ]
})

Étape 2 - Vérification de la taille de la base de données

Maintenant que vous avez une base de données contenant des données, vous pouvez créer une sauvegarde pour celle-ci. Cependant, les sauvegardes seront volumineuses si vous avez une base de données volumineuse et, afin d’éviter tout risque de manque d’espace de stockage et, par conséquent, de ralentir ou de bloquer votre serveur, vous devez vérifier la taille de votre base de données avant de créer une sauvegarde.

Vous pouvez utiliser la méthode + stats + et inspecter la valeur de la clé + dataSize + pour connaître la taille en octets de votre base de données.

db.stats().dataSize;

Pour la base de données actuelle, la valeur de + dataSize + sera un petit nombre:

Sortie de db.stats (). Datasize

592

Notez que la valeur de + dataSize + n’est qu’une estimation approximative de la taille de la sauvegarde.

Étape 3 - Création d’une sauvegarde

Pour créer une sauvegarde, vous pouvez utiliser un utilitaire de ligne de commande appelé + mongodump +. Par défaut, + mongodump + créera une sauvegarde de toutes les bases de données présentes dans une instance de MongoDB. Pour créer une sauvegarde d’une base de données spécifique, vous devez utiliser l’option + -d + et spécifier le nom de la base de données. De plus, pour que + mongodump + sache où stocker la sauvegarde, vous devez utiliser l’option + -o + et spécifier un chemin.

Si vous êtes toujours dans le shell + mongo +, quittez-le en appuyant sur + CTRL + D +.

Tapez la commande suivante pour créer une sauvegarde de * myDatabase * et la stocker dans + ~ / backups / first_backup +:

mongodump -d myDatabase -o ~/backups/first_backup

Si la création de la sauvegarde réussit, vous verrez les messages de journal suivants:

Journaux de création de sauvegarde réussis

2015-11-24T18:11:58.590-0500  writing myDatabase.myCollection to /home/me/backups/first_backup/myDatabase/myCollection.bson
2015-11-24T18:11:58.591-0500  writing myDatabase.myCollection metadata to /home/me/backups/first_backup/myDatabase/myCollection.metadata.json
2015-11-24T18:11:58.592-0500  done dumping myDatabase.myCollection (3 documents)
2015-11-24T18:11:58.592-0500  writing myDatabase.system.indexes to /home/me/backups/first_backup/myDatabase/system.indexes.bson

Notez que la sauvegarde n’est pas un fichier unique. c’est en fait un répertoire qui a la structure suivante:

Structure de répertoire d’une sauvegarde MongoDB

first_backup
└── myDatabase
   ├── myCollection.bson
   ├── myCollection.metadata.json
   └── system.indexes.bson

Étape 4 - Suppression de la base de données

Pour tester la sauvegarde que vous avez créée, vous pouvez utiliser une instance MongoDB s’exécutant sur un autre serveur ou supprimer la base de données sur votre serveur actuel. Dans ce tutoriel, nous allons faire le dernier.

Ouvrez le shell + mongo + et connectez-vous à * myDatabase *.

mongo myDatabase

Supprimez la base de données en utilisant la méthode + dropDatabase +.

db.dropDatabase();

Si la suppression réussit, le message suivant apparaît:

Sortie de dropDatabase ()

{ "dropped" : "myDatabase", "ok" : 1 }

Vous pouvez maintenant utiliser la méthode + find + de votre collection pour voir que toutes les données que vous avez insérées précédemment ont disparu.

db.myCollection.find();

Cette commande ne produira aucune sortie car il n’ya pas de données à afficher dans la base de données.

Étape 5 - Restauration de la base de données

Pour restaurer une base de données à l’aide d’une sauvegarde créée à l’aide de + mongodump +, vous pouvez utiliser un autre utilitaire de ligne de commande appelé + mongorestore +. Avant de l’utiliser, quittez le shell + mongo + en appuyant sur + CTRL + D +.

Utiliser + mongorestore + est très simple. Tout ce dont il a besoin est le chemin du répertoire contenant la sauvegarde. Voici comment vous pouvez restaurer votre base de données en utilisant la sauvegarde stockée dans + ~ / / backupts / first_backup +:

mongorestore ~/backups/first_backup/

Vous verrez les messages de journal suivants si l’opération de restauration a réussi:

Journaux de restauration réussis

2015-11-24T18:27:04.250-0500  building a list of dbs and collections to restore from /home/me/backups/first_backup/ dir
2015-11-24T18:27:04.251-0500  reading metadata file from /home/me/backups/first_backup/myDatabase/myCollection.metadata.json
2015-11-24T18:27:04.252-0500  restoring myDatabase.myCollection from file /home/me/backups/first_backup/myDatabase/myCollection.bson
2015-11-24T18:27:04.309-0500  restoring indexes for collection myDatabase.myCollection from metadata
2015-11-24T18:27:04.310-0500  finished restoring myDatabase.myCollection (3 documents)
2015-11-24T18:27:04.310-0500  done

Pour examiner les données restaurées, ouvrez d’abord le shell + mongo et connectez-vous à` + Database`.

mongo myDatabase

Ensuite, appelez la méthode + find sur votre` + collection`.

db.myCollection.find();

Si tout s’est bien passé, vous devriez maintenant pouvoir voir toutes les données que vous avez insérées précédemment.

Sortie de find ()

{ "_id" : ObjectId("5654e76f21299039c2ba8720"), "name" : "Alice", "age" : 30 }
{ "_id" : ObjectId("5654e76f21299039c2ba8721"), "name" : "Bill", "age" : 25 }
{ "_id" : ObjectId("5654e76f21299039c2ba8722"), "name" : "Bob", "age" : 35 }

Conclusion

Dans ce tutoriel, vous avez appris à utiliser + mongodump + et + mongorestore + pour sauvegarder et restaurer une base de données MongoDB. Notez que la création d’une sauvegarde est une opération coûteuse et peut réduire les performances de votre instance MongoDB. Par conséquent, il est recommandé de créer vos sauvegardes uniquement pendant les heures creuses.

Pour en savoir plus sur les stratégies de sauvegarde MongoDB, vous pouvez vous référer au MongoDB 3.0 manual.

Related