web-dev-qa-db-fra.com

Migrer 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)

38
Praveen Singh Yadav

TL; DR

Utilisez mongodump ET mongorestore _ pour effectuer (et restaurer) une sauvegarde binaire complète de votre base de données MongoDB. Compressez le répertoire de sauvegarde dump pour accélérer la copie sur votre instance Amazon (BSON a tendance à très bien compresser).

Les meilleures pratiques

Plutôt que de suivre les instructions spéciales, je vous recommande fortement de lire le tutoriel standard Sauvegarde et restauration avec MongoDB Tools dans le manuel MongoDB.

Vous pouvez également utiliser un instantané du système de fichiers , mais mongodump et mongorestore exportent uniquement les données afin que votre sauvegarde soit plus petite (le serveur distant n'héritera donc d'aucun allocation de stockage excessive en raison d'une préallocation). .

74
Stennie

Synchronisation automatique entre 2 serveurs
Si votre hôte local est disponible de l'extérieur, vous pouvez utiliser copydb dans admin .
Migrer les données mongodb d’un matériel à un autre:

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 }
11
Manoj Sahu

Vous pouvez créer une sauvegarde de base de données et la transférer dans un compartiment S3.

Tout d'abord, installez s3cmd:

Sudo yum --enablerepo epel install s3cmd

#to configure s3cmd
s3cmd --configure

Créez ensuite une routine de sauvegarde dans un fichier backup.sh:

#!/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 une wget pour télécharger un fichier à partir d'Amazon S3 . Extraire le fichier de sauvegarde à l'aide de tar comme tar -xvf backupname.tar.

Pour restaurer, vous pouvez utiliser:

mongorestore --dbpath <database path> <directory to the backup>

Comme ça:

mongorestore --dbpath /var/lib/mongo backup_directory_name 

J'espère que cela suffit pour vous aider

3

En plus des autres solutions, vous pouvez créer un script bash et l'exécuter 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."
1
sirrele

Installez 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érifiez que les autorisations des fichiers de données sont identiques à celles de votre ordinateur local . puis démarrez Mongodod sur le serveur distant.

0
Tata

Maintenant que vous avez trouvé vos fichiers de données et les avez écrits à l'emplacement de serveur requis, par exemple /data/db/*, vous pouvez démarrer votre commande mongod avec le param dbpath en tant que tel: mongod --dbpath /data/db Assurez-vous d'avoir copié correctement tous les fichiers dans ce nouveau dossier. .

0
brayne