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