Migracja bazy danych mongodb z localhost na serwery zdalne

Stworzyłem bazę danych na moim lokalnym komputerze ubuntu.

Jak mogę przenieść go na mój zdalny serwer (EC2 Ubuntu)

Author: Community, 2014-01-23

6 answers

TL;DR

Użycie mongodump oraz mongorestore aby wykonać (i przywrócić) pełną binarną kopię zapasową bazy danych MongoDB. Skompresuj katalog backup dump, aby szybciej kopiować do instancji Amazon(BSON ma tendencję do kompresji bardzo dobrze).

Najlepsze praktyki

Zamiast postępować zgodnie z instrukcjami adhoc, zdecydowanie zalecam przeczytanie standardowego backup and Restore with MongoDB Tools tutoriala z podręcznika MongoDB.

Możesz również użyć migawka systemu plików , Ale mongodump i mongorestore eksportują tylko dane, aby twoja kopia zapasowa była mniejsza (tzn. Twój zdalny serwer nie odziedziczy żadnej nadmiernej alokacji pamięci z powodu prealokacji).

 71
Author: Stennie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-26 21:58:02

Automatyczna synchronizacja pomiędzy 2 serwerami
Jeśli twój lokalny host jest dostępny z zewnątrz, możesz użyć copydb w panelu administracyjnym.
Migracja danych mongodb z jednego sprzętu na inny:

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
Author: Manoj Sahu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-16 05:45:03

Możesz utworzyć kopię zapasową bazy danych i przenieść ją do zasobnika S3.

Najpierw zainstaluj s3cmd:

sudo yum --enablerepo epel install s3cmd

#to configure s3cmd
s3cmd --configure

Następnie utwórz procedurę tworzenia kopii zapasowej w pliku 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())"

Po uruchomieniu bash backup.sh zostanie utworzony nowy plik jak mongodb-localhost-10-10-2013.tar

Na zdalnym serwerze możesz użyć wget, Aby pobrać plik z Amazon S3. Rozpakuj plik kopii zapasowej używając tar Jak tar -xvf backupname.tar.

Aby przywrócić można użyć:

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

Tak:

mongorestore --dbpath /var/lib/mongo backup_directory_name

I mam nadzieję, że to wystarczy, aby ci pomóc

 3
Author: Lazaro Fernandes Lima,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-23 15:55:30

Zainstaluj oprogramowanie mongo na zdalnym serwerze Zatrzymaj mongod na komputerze lokalnym. skopiuj pliki danych i konfigurację na komputer zdalny. zweryfikuj uprawnienia plików danych są takie same jak na komputerze lokalnym. a następnie uruchom mongod na zdalnym serwerze.

 0
Author: Tata,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-23 09:02:53

Teraz, gdy znalazłeś swoje pliki danych i SCP-ed je do wymaganej lokalizacji serwera, powiedzmy /data/db/*, możesz uruchomić mongod polecenie z param dbpath jako takie: mongod --dbpath /data/db Upewnij się, że skopiowałeś wszystkie pliki poprawnie do tego nowego folderu.

 0
Author: brayne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-23 11:28:50

Oprócz innych rozwiązań można utworzyć skrypt bash i preform to bardzo łatwo.

#!/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
Author: sirrele,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-18 18:46:25