Migration de la base de données mongodb de localhost vers des serveurs distants
j'ai créé une base de données sur ma machine ubuntu locale.
Comment puis-je le transférer sur mon serveur distant (EC2 Ubuntu)
6 réponses
TL;DR
Utiliser mongodump
et mongorestore
prendre (et de restauration) un binaire complète de sauvegarde de votre base de données MongoDB. Compresser la sauvegarde dump
répertoire pour le rendre plus rapide à copier dans votre instance Amazon (BSON a tendance à compresser très bien).
les Meilleures pratiques
Sauvegarde et de Restauration avec MongoDB Outils tutoriel dans le MongoDB manuel. vous pouvez aussi utiliser un système de fichiers de capture instantanée, mais mongodump
et mongorestore
exportez seulement les données pour que votre sauvegarde soit plus petite (c.-à-d. que votre serveur distant n'héritera pas de allocation excessive de stockage en raison de preallocation).
Synchronisation Automatique entre les 2 Serveur
Si votre hôte local est disponible de l'extérieur, vous pouvez utiliser copydb dans admin.
Migrer de données mongodb un matériel à un autre matériel:
user@server:~$ mongo
MongoDB shell version: 2.6.11
connecting to: test
> use admin
switched to db admin
>db.runCommand({copydb:1,fromhost:'your previous host',fromdb:'Auctions_Data',todb:'Auctions_Data'})
{ "ok" : 1 }
vous pouvez créer une sauvegarde de base de données et la transférer dans un seau S3.
tout d'Abord, installez s3cmd:
sudo yum --enablerepo epel install s3cmd
#to configure s3cmd
s3cmd --configure
puis créer une routine de sauvegarde dans un backup.sh
fichier:
#!/bin/bash
#Force file syncronization and lock writes
mongo admin --eval "printjson(db.fsyncLock())"
MONGODUMP_PATH="/usr/bin/mongodump"
MONGO_HOST="prod.example.com"
MONGO_PORT="27017"
MONGO_DATABASE="dbname"
TIMESTAMP=`date +%F-%H%M`
S3_BUCKET_NAME="bucketname"
S3_BUCKET_PATH="mongodb-backups"
# Create backup
$MONGODUMP_PATH -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE
# Add timestamp to backup
mv dump mongodb-$HOSTNAME-$TIMESTAMP
tar cf mongodb-$HOSTNAME-$TIMESTAMP.tar mongodb-$HOSTNAME-$TIMESTAMP
# Upload to S3
s3cmd put mongodb-$HOSTNAME-$TIMESTAMP.tar s3://$S3_BUCKET_NAME/$S3_BUCKET_PATH/mongodb-$HOSTNAME-$TIMESTAMP.tar
#Unlock databases writes
mongo admin --eval "printjson(db.fsyncUnlock())"
Lorsque vous exécutez bash backup.sh
un nouveau fichier sera créé comme mongodb-localhost-10-10-2013.tar
Sur le serveur distant, vous pouvez utiliser un wget
pour télécharger le fichier de Amazon S3.
Extraire le fichier de sauvegarde en utilisant tar
tar -xvf backupname.tar
.
pour restaurer vous pouvez utilisation:
mongorestore --dbpath <database path> <directory to the backup>
Comme ceci:
mongorestore --dbpath /var/lib/mongo backup_directory_name
j'espère que c'est assez pour vous aider
installer le logiciel mongo sur votre serveur distant Arrêtez mongod sur votre ordinateur local. copiez les fichiers de données et la configuration sur l'ordinateur distant. vérifier les autorisations des fichiers de données sont les mêmes que sur votre ordinateur local. puis lancer mongod sur le serveur distant.
maintenant que vous avez trouvé vos fichiers de données, et que vous les avez envoyés à l'emplacement du serveur nécessaire, dites /data/db/*
, vous pouvez commencer votre mongod
commande avec le paramètre dbpath
en tant que tel:mongod --dbpath /data/db
assurez-vous que vous avez copié tous les fichiers correctement dans ce nouveau dossier.
outre les autres solutions, vous pouvez créer un script bash et préforme très facilement.
#!/bin/bash
HOST="somehost.com"
PORT="2345"
REMOTE_DB="some-remote-db"
LOCAL_DB="your-local-db"
USER="remote-user-name"
PASS="passwordForRemoteUser"
## DUMP REMOTE DATABASE
echo "Dumping '$HOST:$PORT/$REMOTE_DB'..."
mongodump --host $HOST:$PORT --db $REMOTE_DB -u $USER -p $PASS
## RESTORE DUMP DIRECTORY
echo "Restoring to '$LOCAL_DB'..."
mongorestore --db $LOCAL_DB --drop dump/$REMOTE_DB
## REMOVE DUMP FILES
echo "Removing dump files..."
rm -r dump
echo "Finished."