Cette rubrique explique comment restaurer les données d’une instance ApsaraDB for MongoDB vers une base de données MongoDB auto-gérée en mode autonome ou en ensemble de réplicas, à l’aide de fichiers de sauvegarde physique.
Prérequis
L’instance est une instance en ensemble de réplicas.
L’instance utilise des disques locaux pour stocker les données.
La fonctionnalité Transparent Data Encryption (TDE) est désactivée pour l’instance. Pour plus d’informations, consultez la section Configurer TDE pour une instance.
-
Le moteur de stockage de l’instance est WiredTiger ou RocksDB. Si le moteur de stockage de l’instance est TerarkDB, vous pouvez restaurer les données de l’instance vers une base de données auto-gérée à l’aide d’une sauvegarde logique. Pour plus d’informations, consultez la section Restaurer les données d’instance dans une base de données MongoDB auto-gérée à l’aide d’une sauvegarde logique.
RemarqueVous pouvez consulter le moteur de stockage de l’instance sur la page Basic Information dans la console ApsaraDB for MongoDB.
Si le moteur de stockage de l’instance est RocksDB, vous devez compiler et installer une application MongoDB équipée du moteur de stockage RocksDB.
Exigences relatives à la version de la base de données
La version de l’instance doit correspondre à celle de la base de données MongoDB auto-gérée. Le tableau suivant répertorie les correspondances entre l’instance et la base de données MongoDB auto-gérée.
|
Instance ApsaraDB for MongoDB |
Base de données MongoDB auto-gérée |
|
MongoDB 3.2 |
MongoDB 3.2 ou 3,4 |
|
MongoDB 3,4 |
MongoDB 3,4 |
|
MongoDB 4.0 |
MongoDB 4.0 |
|
MongoDB 4.2 |
MongoDB 4.2 |
Formats des fichiers de sauvegarde physique
Format du fichier de sauvegarde physique | Extension de fichier | Description |
TAR | .tar.gz | Les instances ApsaraDB for MongoDB créées avant le 26 mars 2019 disposent de fichiers de sauvegarde physique au format .tar. |
xbstream | _qp.xb | Les instances ApsaraDB for MongoDB créées le 26 mars 2019 ou après cette date disposent de fichiers de sauvegarde physique au format .xbstream. Remarque Le format .xbstream est disponible uniquement sous Linux. Il n’est pas pris en charge sous Windows, car ce système d’exploitation ne prend pas en charge l’outil Percona XtraBackup utilisé pour décompresser les fichiers au format .xbstream. |
Environnement
La procédure suivante utilise une instance Elastic Compute Service (ECS) créée à partir d’une image Ubuntu 16.04 64 bits. Pour plus d’informations sur la création d’une instance ECS, consultez la section Créer une instance à l’aide de l’assistant.
MongoDB dans la version requise est installé sur l’instance ECS. Pour plus d’informations sur l’installation de MongoDB, consultez la section Ajouter un pilote MongoDB.
Les variables d’environnement sont configurées pour la base de données MongoDB auto-gérée sur l’instance ECS. Lorsque vous exécutez des commandes, il n’est pas nécessaire de saisir à nouveau les chemins d’accès aux fichiers exécutables. Pour plus d’informations, consultez la section Étape 1 : Configurer les variables d’environnement.
Le répertoire /test/mongo/data de l’instance ECS est utilisé pour l’instance en ensemble de réplicas.
Les répertoires /test/mongo/data1 et /test/mongo/data2 de l’instance ECS sont utilisés pour la base de données MongoDB auto-gérée dans un nœud d’ensemble de réplicas.
Étape 1 : Configurer les variables d’environnement
Configurez les variables d’environnement pour la base de données MongoDB auto-gérée. Ainsi, vous n’aurez pas besoin de saisir les chemins d’accès aux fichiers exécutables lors de l’exécution des commandes. Avant d’effectuer cette étape, assurez-vous que MongoDB est installé. Pour plus d’informations, visitez la page Installer MongoDB.
Si les variables d’environnement sont déjà configurées pour MongoDB, ignorez cette étape et passez directement aux opérations de l’étape 2. Pour plus d’informations, consultez la section Étape 2 : Télécharger et décompresser un fichier de sauvegarde physique.
-
Exécutez la commande suivante pour ouvrir le fichier
profilesous Linux :sudo vi /etc/profile -
Appuyez sur la touche
ipour passer en mode édition. Ensuite, saisissez le code suivant sur la dernière ligne :export PATH=$PATH:/<The path of the MongoDB server>/binRemarqueDans cet exemple, le chemin d’accès au serveur MongoDB est /test/mongo/bin. Utilisez le chemin réel lors de la configuration des variables d’environnement.
Exemple :
export PATH=$PATH:/test/mongo/bin Appuyez sur la touche Échap pour quitter le mode édition, puis saisissez
:wqpour enregistrer le fichier et quitter.-
Exécutez la commande suivante pour activer les variables d’environnement configurées :
source /etc/profile
Étape 2 : Télécharger et décompresser un fichier de sauvegarde physique
-
Exécutez la commande suivante pour télécharger les données de sauvegarde physique de l’instance depuis la console ApsaraDB for MongoDB. Pour plus d’informations, consultez la section Télécharger les données de sauvegarde physique d’une instance en ensemble de réplicas.
wget -c '<External download URL of the data backup file>' -O <Custom name of the downloaded data backup file>.<File name extension>RemarqueAssurez-vous que l’extension du fichier est
.tar.gzou_qp.xb. -
Exécutez la commande suivante pour créer un répertoire nommé
datadans le répertoire /test/mongo/. Déplacez ensuite le fichier de sauvegarde physique téléchargé de l’instance vers le répertoire /test/mongo/data/.mkdir -p /test/mongo/data && mv <Name of the physical backup file.Extension> /test/mongo/data -
Décompressez le fichier de sauvegarde physique.
-
Si le nom du fichier de sauvegarde physique contient l’extension .tar.gz, telle que hins20190412.tar.gz, exécutez la commande suivante pour décompresser le fichier :
cd /test/mongo/data/ && tar xzvf hins20190412.tar.gz -
Si le nom du fichier de sauvegarde physique contient l’extension _qp.xb, telle que hins20190412_qp.xb, effectuez les opérations suivantes pour décompresser le fichier :
Installez les outils Percona XtraBackup et qpress. Pour plus d’informations, visitez la page Installing Percona XtraBackup on Debian and Ubuntu.
-
Décompressez le fichier de sauvegarde physique. Dans cet exemple, le nom du fichier est hins20190412_qp.xb.
# Go to the directory where the file is located. cd /test/mongo/data/ # Decompress the package. cat hins20190412_qp.xb | xbstream -x -v # Decompress the physical backup file. innobackupex --decompress --remove-original /test/mongo/data
-
Étape 3 : Restaurer les données dans la base de données MongoDB auto-gérée en mode autonome
-
Exécutez la commande suivante pour créer un fichier de configuration nommé mongod.conf dans le répertoire /test/mongo :
touch /test/mongo/mongod.conf -
Dans la ligne de commande, saisissez
vi /test/mongo/mongod.confpour ouvrir le fichier mongod.conf. Appuyez ensuite sur la toucheipour passer en mode édition.Sélectionnez un modèle de configuration en fonction du moteur de stockage de l’instance, puis copiez-le dans le fichier de configuration mongod.conf.
RemarqueDans ce fichier, activez le démarrage autonome et l’autorisation.
-
WiredTiger
systemLog: destination: file path: /test/mongo/mongod.log logAppend: true security: authorization: enabled storage: dbPath: /test/mongo/data directoryPerDB: true net: port: 27017 unixDomainSocket: enabled: false processManagement: fork: true pidFilePath: /test/mongo/mongod.pidRemarquePar défaut, ApsaraDB for MongoDB utilise le moteur de stockage WiredTiger et l’option directoryPerDB est activée. Par conséquent, l’option directoryPerDB est définie sur true dans la configuration ci-dessus.
-
RocksDB
systemLog: destination: file path: /test/mongo/logs/mongod.log logAppend: true security: authorization: enabled storage: dbPath: /test/mongo/data engine: rocksdb net: port: 27017 unixDomainSocket: enabled: false processManagement: fork: true pidFilePath: /test/mongo/mongod.pid
-
Appuyez sur la touche Échap pour quitter le mode édition, puis saisissez
:wqpour enregistrer le fichier et quitter.-
Utilisez le fichier de configuration mongod.conf pour démarrer MongoDB.
mongod -f /test/mongo/mongod.conf -
Après avoir démarré MongoDB, exécutez la commande suivante pour vous connecter à la base de données MongoDB auto-gérée et accéder au shell mongo :
mongo --host 127.0.0.1 -u <username> -p <password> --authenticationDatabase admin<username> : le compte utilisé pour se connecter à la base de données MongoDB auto-gérée. La valeur par défaut est root.
-
<password> : le mot de passe utilisé pour se connecter à la base de données MongoDB auto-gérée.
RemarqueSi le mot de passe contient des caractères spéciaux, vous devez l’encadrer par des guillemets simples (' '). Exemple : 'test123!@#'. Sinon, la connexion à la base de données peut échouer.
Exécutez la commande
show dbsdans le shell mongo pour interroger toutes les bases de données disponibles sur le serveur MongoDB. Cela vous permet de vérifier si la restauration a réussi.Exécutez la commande
exitdans le shell mongo pour quitter celui-ci.
Une fois les étapes précédentes terminées, vous pouvez démarrer la base de données MongoDB en mode autonome. Pour démarrer la base de données en mode ensemble de réplicas, suivez les instructions de l’étape 4.
Étape 4 : Démarrer la base de données MongoDB auto-gérée en mode ensemble de réplicas
Par défaut, les fichiers de sauvegarde physique de l’instance contiennent ses configurations d’ensemble de réplicas. Pour démarrer la base de données MongoDB auto-gérée en mode ensemble de réplicas, vous devez supprimer ces configurations des sauvegardes physiques. Procédez comme suit pour démarrer la base de données MongoDB auto-gérée en mode ensemble de réplicas :
-
Dans la ligne de commande, connectez-vous à la base de données en tant qu’utilisateur test à l’aide du shell mongo :
mongo --host 127.0.0.1 -u test -p <Password of the test account> --authenticationDatabase adminRemarqueSi le mot de passe contient des caractères spéciaux, vous devez l’encadrer par des guillemets simples (' '). Exemple : 'test123!@#'. Sinon, la connexion à la base de données peut échouer.
-
Une fois connecté à la base de données, exécutez les commandes du code d’exemple pour effectuer les opérations suivantes :
Créez un utilisateur temporaire dans la base de données admin et accordez-lui les autorisations de lecture et d’écriture sur la base de données local.
Basculez vers l’utilisateur temporaire et supprimez la configuration d’ensemble de réplicas d’origine de la base de données local.
-
Revenez à l’utilisateur test et supprimez l’utilisateur temporaire ainsi que les autorisations temporaires.
RemarqueRemplacez
<Password of the test account>dans le code suivant par le mot de passe de votre compte test.
use admin db.runCommand({ createRole: "tmprole", roles: [ { role: "test", db: "admin" } ], privileges: [ { resource: { db: 'local', collection: 'system.replset' }, actions: [ 'remove' ] } ] }) db.runCommand({ createUser: "tmpuser", pwd: "tmppwd", roles: [ 'tmprole' ] }) db.auth('tmpuser','tmppwd') use local db.system.replset.remove({}) use admin db.auth('test','<Password of the test account>') db.dropRole('tmprole') db.dropUser('tmpuser') -
Exécutez les commandes suivantes pour arrêter le service MongoDB et quitter le shell mongo :
use admin db.shutdownServer() exit -
Créez le fichier d’authentification sur l’ensemble de réplicas.
Pour démarrer la base de données en mode ensemble de réplicas, vous devez créer un fichier de clé pour tous les nœuds de l’ensemble de réplicas afin qu’ils s’authentifient mutuellement.
-
Exécutez la commande suivante pour créer le dossier keyFile dans le répertoire mongo en tant que répertoire de fichier d’authentification, puis créez un fichier de clé dans ce répertoire :
mkdir -p /test/mongo/keyFile && touch /test/mongo/keyFile/mongodb.key -
Exécutez la commande
vi /test/mongo/keyFile/mongodb.keypour ouvrir le fichier mongodb.key. Appuyez ensuite sur la toucheipour passer en mode édition. Exemple :MongoDB Encrypting FileRemarqueLa clé utilisée pour chiffrer les données présente les limitations suivantes :
La longueur de la clé doit être comprise entre 6 et 1 024 caractères.
La clé ne peut contenir que des caractères encodés en Base64.
La clé ne peut pas contenir de signes égal (=).
Appuyez sur la touche Échap pour quitter le mode édition, puis saisissez
:wqpour enregistrer le fichier et quitter.-
Dans la ligne de commande, exécutez la commande suivante pour modifier les autorisations du fichier d’authentification en
400. Ainsi, seul le propriétaire du fichier pourra consulter son contenu.sudo chmod 400 /test/mongo/keyFile/mongodb.key
RemarqueCe fichier d’authentification s’applique à tous les nœuds de l’ensemble de réplicas.
-
-
Effectuez les opérations suivantes pour préparer deux nœuds vides pour l’ensemble de réplicas :
-
Exécutez la commande suivante pour créer deux copies du fichier mongod.conf. Ces deux copies serviront de fichiers de configuration pour les deux autres nœuds.
cp /test/mongo/mongod.conf /test/mongo/mongod1.conf && cp /test/mongo/mongod.conf /test/mongo/mongod2.conf -
Exécutez la commande suivante pour créer des répertoires de données pour les deux autres nœuds :
mkdir -p /test/mongo/data1 && mkdir -p /test/mongo/data2
-
-
Modifiez le fichier de configuration de chaque nœud en procédant comme suit :
-
Exécutez la commande
vi /test/mongo/mongod.confpour ouvrir le fichier de configuration du nœud 1 et modifiez-le selon le contenu ci-dessous. Enregistrez ensuite le fichier de configuration et quittez.systemLog: destination: file path: /test/mongo/mongod.log logAppend: true security: authorization: enabled keyFile: /test/mongo/keyFile/mongodb.key storage: dbPath: /test/mongo/data directoryPerDB: true net: bindIp: 127.0.0.1 port: 27017 unixDomainSocket: enabled: false processManagement: fork: true pidFilePath: /test/mongo/mongod.pid replication: replSetName: "rs0" -
Exécutez la commande
vi /test/mongo/mongod1.confpour ouvrir le fichier de configuration du nœud 2 et modifiez-le selon le contenu ci-dessous. Enregistrez ensuite le fichier de configuration et quittez.systemLog: destination: file path: /test/mongo/mongod1.log logAppend: true security: authorization: enabled keyFile: /test/mongo/keyFile/mongodb.key storage: dbPath: /test/mongo/data1 directoryPerDB: true net: bindIp: 127.0.0.1 port: 27018 unixDomainSocket: enabled: false processManagement: fork: true pidFilePath: /test/mongo/mongod1.pid replication: replSetName: "rs0" -
Exécutez la commande
vi /test/mongo/mongod2.confpour ouvrir le fichier de configuration du nœud 3 et modifiez-le selon le contenu ci-dessous. Enregistrez ensuite le fichier de configuration et quittez.systemLog: destination: file path: /test/mongo/mongod2.log logAppend: true security: authorization: enabled keyFile: /test/mongo/keyFile/mongodb.key storage: dbPath: /test/mongo/data2 directoryPerDB: true net: bindIp: 127.0.0.1 port: 27019 unixDomainSocket: enabled: false processManagement: fork: true pidFilePath: /test/mongo/mongod2.pid replication: replSetName: "rs0"
Vous pouvez modifier les paramètres suivants dans les fichiers de configuration :
path dans systemLog.path : le chemin de stockage des fichiers journaux MongoDB dans le nœud actuel.
dbpath : le chemin de stockage des fichiers de données MongoDB dans le nœud actuel.
pidFilePath : le chemin de stockage des fichiers d’ID de processus (PID) MongoDB dans le nœud actuel.
keyFile : le chemin de stockage du fichier d’authentification pour l’ensemble de réplicas. Tous les nœuds de l’ensemble de réplicas doivent utiliser le même fichier d’authentification.
bindIp : l’adresse IP du nœud actuel. Si tous les nœuds de l’ensemble de réplicas sont déployés sur le même serveur, ils peuvent utiliser la même adresse IP.
port : le numéro de port du nœud actuel. Si tous les nœuds de l’ensemble de réplicas sont déployés sur le même serveur, ils doivent utiliser des numéros de port différents.
replication : la configuration de l’ensemble de réplicas.
replSetName : le nom de l’ensemble de réplicas.
-
-
Exécutez la commande suivante pour démarrer les trois nœuds :
mongod -f /test/mongo/mongod.conf && mongod -f /test/mongo/mongod1.conf && mongod -f /test/mongo/mongod2.conf -
Après avoir démarré les trois nœuds, utilisez le compte test pour vous connecter à la base de données MongoDB auto-gérée.
mongo --host 127.0.0.1 -u test -p <Password of the test account> --authenticationDatabase adminRemarqueSi le mot de passe contient des caractères spéciaux, vous devez l’encadrer par des guillemets simples (' '). Exemple : 'test123!@#'. Sinon, la connexion à la base de données peut échouer.
-
Dans le shell mongo, exécutez la commande suivante pour ajouter les nœuds que vous avez créés lors des opérations précédentes à l’ensemble de réplicas et initialiser celui-ci :
rs.initiate( { _id : "rs0", version : 1, members: [ { _id: 0, host: "127.0.0.1:27017" , priority : 1}, { _id: 1, host: "127.0.0.1:27018" , priority : 0}, { _id: 2, host: "127.0.0.1:27019" , priority : 0} ] })Une initialisation réussie renvoie la sortie suivante :
> rs.initiate( { ... _id : "rs0", ... version : 1, ... members: [ ... { _id: 0, host: "127.0.0.1:27017" , priority : 1}, ... { _id: 1, host: "127.0.0.1:27018" , priority : 0}, ... { _id: 2, host: "127.0.0.1:27019" , priority : 0} ... ] ... }) { "ok" : 1 } rs0:SECONDARY>RemarqueLa commande
rs.initiate()est utilisée dans cette étape. Pour plus d’informations sur cette commande, visitez la page rs.initiate().Après l’exécution de la commande, les données sont synchronisées entre les deux nœuds ajoutés et le nœud principal. La durée de ce processus varie en fonction de la taille du fichier de sauvegarde. Une fois les données synchronisées, la base de données MongoDB auto-gérée est démarrée en mode ensemble de réplicas.
-
Effectuez les opérations suivantes pour vérifier si la base de données MongoDB auto-gérée en mode ensemble de réplicas est démarrée :
Exécutez la commande
exitpour quitter le shell mongo.-
Exécutez la commande suivante pour vous reconnecter à la base de données MongoDB auto-gérée :
mongo -u <username> -p <password> --authenticationDatabase admin<username> : le compte utilisé pour se connecter à la base de données MongoDB auto-gérée. La valeur par défaut est root.
-
<password> : le mot de passe utilisé pour se connecter à la base de données MongoDB auto-gérée.
RemarqueSi le mot de passe contient des caractères spéciaux, vous devez l’encadrer par des guillemets simples (' '). Exemple : 'test123!@#'. Sinon, la connexion à la base de données peut échouer.
-
Vérifiez si la base de données MongoDB auto-gérée est démarrée en mode ensemble de réplicas. Si
<Name of the replica set>:PRIMARY>s’affiche à gauche de la ligne de commande dans le shell mongo, la base de données MongoDB auto-gérée est démarrée en mode ensemble de réplicas.
FAQ
Pourquoi une erreur se produit-elle lorsque j’utilise le fichier de configuration mongod.conf spécifié pour démarrer la base de données MongoDB auto-gérée ?
Les causes courantes incluent :
Il se peut que vous ayez démarré la base de données MongoDB auto-gérée avant de spécifier le fichier de configuration
mongod.conf. Par conséquent, le fichierstorage.bsonest généré automatiquement dans le répertoire de données. Dans ce cas, supprimez le fichier storage.bson et spécifiez le fichier de configurationmongod.confpour démarrer la base de données MongoDB auto-gérée.Un autre processus mongod peut être en cours d’exécution dans le système actuel. Dans ce cas, exécutez la commande
ps -e | grep mongodpour interroger le PID, puis exécutez la commandekill <PID>pour arrêter le processus. Ensuite, spécifiez le fichier de configurationmongod.confpour démarrer la base de données MongoDB auto-gérée.Le chemin du journal systemLog.path spécifié dans le fichier de configuration
mongod.confpeut être invalide. Dans ce cas, vérifiez si le chemin spécifié existe et si le fichier journal porte le nom spécifié. Exemple :path: /<Path of the log file>/<Name of the log file>.log.
Pourquoi une erreur se produit-elle lorsque j’utilise le fichier de configuration mongod.conf pour démarrer la base de données MongoDB auto-gérée en mode ensemble de réplicas ?
Il se peut que vous n’ayez pas pu modifier les autorisations du fichier d’authentification keyFile spécifié en 600. Dans la ligne de commande, exécutez la commande sudo chmod 600 <Path of keyFile> pour modifier les autorisations.
Pourquoi les performances du système deviennent-elles faibles après le démarrage de la base de données MongoDB auto-gérée en mode ensemble de réplicas ?
Après le démarrage de la base de données MongoDB auto-gérée en mode ensemble de réplicas, le système commence automatiquement à synchroniser les données du nœud principal vers les autres nœuds. Ce processus peut affecter les performances du système. Les performances du système redeviennent normales une fois les données synchronisées.