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)

36
demandé sur Community 2014-01-23 12:55:19

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

71
répondu Stennie 2015-11-26 21:58:02

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 }
11
répondu Manoj Sahu 2016-12-16 05:45:03

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 tartar -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

3
répondu Lazaro Fernandes Lima 2014-01-23 15:55:30

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.

0
répondu Tata 2014-01-23 09:02:53

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.

0
répondu brayne 2014-01-23 11:28:50

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."
0
répondu sirrele 2018-04-18 18:46:25