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