Вопрос

I created a database on my local ubuntu machine.

How can I transfer it to my remote server (ec2 Ubuntu)

Это было полезно?

Решение

TL;DR

Use mongodump and mongorestore to take (and restore) a full binary backup of your MongoDB database. Compress the backup dump directory to make it faster to copy to your Amazon instance (BSON tends to compress very well).

Best practices

Rather than following adhoc instructions, I would strongly recommend reading the standard Backup and Restore with MongoDB Tools tutorial in the MongoDB manual.

You can also use a Filesystem snapshot, but mongodump and mongorestore only export the data so your backup will be smaller (i.e. your remote server will not inherit any excessive storage allocation due to preallocation).

Другие советы

Auto Sync between 2 Server
If your local host is available from outside you can use copydb in admin.
Migrate mongodb data one hardware to another hardware:

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 }

In addition to the other solutions you can create a bash script and preform this very easily.

#!/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."

You can create a database backup and transfer it to a S3 bucket.

First, install s3cmd:

sudo yum --enablerepo epel install s3cmd

#to configure s3cmd
s3cmd --configure

Then create a backup routine in a backup.sh file:

#!/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())"

When you run bash backup.sh a new file will be created like mongodb-localhost-10-10-2013.tar

On the remote server you can use a wget to download file from Amazon S3. Extract backup file using tar like tar -xvf backupname.tar.

To restore you can use:

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

Like this:

mongorestore --dbpath /var/lib/mongo backup_directory_name

I hope this is enough to help you

Install mongo software on your remote server Stop mongod on your local computer. copy the data files and configuration to the remote computer. verify permissions of the data files are the same as on your local computer. and then start mongod on the remote server.

Now that you have found your data files, and scp-ed them to the necessary server location, say /data/db/* , you can start your mongod command with the param dbpath as such : mongod --dbpath /data/db Ensure that you have copied all the files correctly into this new folder.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top