Ich habe auf meinem lokalen Ubuntu-Rechner eine Datenbank erstellt.
Wie kann ich es auf meinen Remote-Server übertragen (ec2 Ubuntu)
Verwenden Sie mongodump
UND mongorestore
, um eine vollständige binäre Sicherung Ihrer MongoDB-Datenbank zu erstellen (und wiederherzustellen). Komprimieren Sie das Sicherungsverzeichnis dump
, um das Kopieren in Ihre Amazon-Instanz zu beschleunigen (BSON neigt dazu, sehr gut zu komprimieren).
Anstatt den Adhoc-Anweisungen zu folgen, würde ich dringend empfehlen, das Standard-Tutorial Backup and Restore mit MongoDB-Tools im MongoDB-Handbuch zu lesen.
Sie können auch einen Filesystem-Snapshot verwenden, aber mongodump
und mongorestore
exportieren nur die Daten, so dass Ihre Sicherung kleiner ist (d. H. Ihr Remote-Server erbt aufgrund der Vorabzuweisung keine übermäßige Speicherzuweisung ).
Auto Sync zwischen 2 Servern
Wenn Ihr lokaler Host von außen verfügbar ist, können Sie copydb in admin ..__ verwenden.
Migrieren Sie mongodb-Daten von einer Hardware auf eine andere Hardware:
[email protected]:~$ 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 }
Sie können eine Datenbanksicherung erstellen und in einen S3-Bucket übertragen.
Installieren Sie zuerst s3cmd:
Sudo yum --enablerepo epel install s3cmd
#to configure s3cmd
s3cmd --configure
Dann erstellen Sie eine Sicherungsroutine in einer backup.sh
-Datei:
#!/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())"
Wenn Sie bash backup.sh
ausführen, wird eine neue Datei wie mongodb-localhost-10-10-2013.tar
erstellt.
Auf dem Remote-Server können Sie eine wget
-Datei zum Herunterladen von Amazon S3 verwenden. _. Extrahieren Sie die Sicherungsdatei mit tar
wie tar -xvf backupname.tar
.
Zur Wiederherstellung können Sie verwenden:
mongorestore --dbpath <database path> <directory to the backup>
So was:
mongorestore --dbpath /var/lib/mongo backup_directory_name
Ich hoffe das ist genug um dir zu helfen
Zusätzlich zu den anderen Lösungen können Sie ein Bash-Skript erstellen und dies sehr einfach durchführen.
#!/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."
Installieren Sie die Mongo-Software auf Ihrem Remote-Server Stoppen Sie Mongod auf Ihrem lokalen Computer. Kopieren Sie die Datendateien und die Konfiguration auf den Remote-Computer . Überprüfen Sie, ob die Berechtigungen der Datendateien mit denen auf Ihrem lokalen Computer . übereinstimmen, und starten Sie mongod auf dem Remote-Server.
Nachdem Sie Ihre Dateien gefunden und an den erforderlichen Serverstandort gescannt haben, sagen Sie /data/db/*
, können Sie Ihren mongod
-Befehl mit dem Parameter dbpath
starten: mongod --dbpath /data/db
Stellen Sie sicher, dass Sie alle Dateien korrekt in diesen neuen Ordner kopiert haben .