mongodb - how - Mongorestore, desde servidor de producción de meteoros a local.
mongorestore folder path (6)
Esto es lo que hago:
I. Crear un volcado de mongo en el servidor.
DATE=$(date +%m%d%y_%H.%M); mongodump --host localhost -d APPNAME -o /tmp/APPNAME_$DATE tar -cjvvf /tmp/APPNAME_$DATE.tar.bz2 /tmp/APPNAME_$DATE
II. Descargue el volcado en la máquina de desarrollo y descomprima en / tmp
scp root@$HOST:/tmp/APPNAME_$DATE.tar.bz2 /tmp/ cp /tmp/APPNAME_$DATE.tar.bz2 . mkdir -p /tmp/APPNAME_$DATE cd /tmp/APPNAME_$DATE tar -xjvf /tmp/APPNAME_$DATE.tar.bz2
III. Actualizar la base de datos de desarrollo de meteoros local
mongorestore --db meteor -h localhost --port 8082 --drop /tmp/APPNAME_$DATE/tmp/APPNAME_$DATE/APPNAME
He encontrado un montón de buenas instrucciones sobre cómo usar mongodump y mongorestore, para hacer una copia de seguridad de mi servidor de producción de meteoritos y restaurar la copia de seguridad si es necesario:
meteor mongo --url myApp.meteor.com
mongodump -u client -h production-db-b2.meteor.io:27017 -d myApp_meteor_com -out dump/2014_10_21 -p [password from meteor mongo --url]
mongorestore -u client -h production-db-b2.meteor.io:27017 -d myApp_meteor_com dump/2014_10_21_v2/myApp_meteor_com -p [password from meteor mongo --url]
Lo que no he encontrado es una explicación de cómo restaurar un volcado de respaldo a mi aplicación meteorológica local. Tengo una salida mongodump en mi carpeta de aplicaciones. No estoy seguro de si puedo usar mongorestore o si hay algo más que se supone que debo hacer.
Estoy usando Google Cloud para el alojamiento de Meteor y escribí scripts personalizados.
Tengo esto funcionando en un cronjob para hacer una copia de seguridad al almacenamiento en la nube de Google:
https://github.com/markoshust/mongo-docker-backup-gcloud/blob/master/mongobackup.sh
#!/bin/bash
MONGO_DB=dbname
MONGO_HOST=127.0.0.1
HOST_DIR=/home/YOURNAME
BACKUP_DIR=/mongobackup
BUCKET=gs://BUCKET_NAME
DATE=`date +%Y-%m-%d:%H:%M:%S`
/usr/bin/docker run --rm /
-v $HOST_DIR/$BACKUP_DIR:$BACKUP_DIR /
markoshust/mongoclient /
mongodump --host $MONGO_HOST --db $MONGO_DB --out $BACKUP_DIR
sudo mkdir -p $HOST_DIR/$BACKUP_DIR/$MONGO_DB/$DATE
sudo mv $HOST_DIR/$BACKUP_DIR/$MONGO_DB/* $HOST_DIR/$BACKUP_DIR/$MONGO_DB/$DATE
$HOST_DIR/gsutil/gsutil rsync -r $HOST_DIR/$BACKUP_DIR $BUCKET
sudo /bin/rm -rf $HOST_DIR/$BACKUP_DIR
Luego, para restaurar localmente, creé otro script que descarga la copia de seguridad del almacenamiento en la nube de Google, almacena localmente, luego realiza una restauración local
https://github.com/markoshust/mongorestore.sh/blob/master/.mongorestore.sh
#!/bin/bash
## This script syncs a mongodb backup from a Google Cloud Storage bucket and
## mongorestore''s it to a local db.
##
## Author: Mark Shust <[email protected]>
## Version: 1.1.0
BUCKET=my-bucket-name
FOLDER=folder-name/$1
BACKUP_DIR=./.backups/
DB_NAME=localdb
DB_HOST=localhost
DB_PORT=27017
if [ -z $1 ]; then
echo ''Please specify a subdirectory to sync from...''
exit 0
fi
mkdir -p $BACKUP_DIR
if [ ! -d $BACKUP_DIR ]; then
gsutil -m cp -r gs://$BUCKET/$FOLDER $BACKUP_DIR
fi
mongorestore --db $DB_NAME -h $DB_HOST --port $DB_PORT --drop $BACKUP_DIR/$1/
echo ''Database restore complete.''
Tengo este trabajo con Meteor, estúpido simple y funciona muy bien :) Simplemente cambie el nombre de db a meteor
y el puerto a 3001
(o cualquier configuración que tenga). Es meteorológico, por lo que funciona con cualquier host / plataforma mongodb.
La forma más fácil que encontré:
-
cd
en tu proyecto y ejecuta el comandometeor
- en otra terminal:
mongorestore -h 127.0.0.1 --port 3001 -d meteor dump/meteor
cambie 127.0.0.1
si su host local tiene una dirección IP diferente y 3001
a un puerto en el que tiene mongodb (normalmente es 3001
o 3002
, entonces intente ambos), dump/meteor
es el camino a un volcado que creó anteriormente.
También la forma más fácil de exportar db local:
-
cd
en tu proyecto y ejecuta el comandometeor
- En otra terminal:
mongodump -h 127.0.0.1 --port 3001 -d meteor
de nuevo, cambie el ip localhost y el puerto si es necesario. . Como resultado, la carpeta dump / meteor con archivos db se creará en la carpeta que cd
antes de ejecutar mongodump
.
Buena suerte.
Para lograr lo contrario, al enviar datos de aplicaciones locales a aplicaciones de producción, escribí este pequeño script de shell. Ha sido útil mientras estoy desarrollando localmente y solo estoy sincronizando la demostración para que la vea el cliente. Tenga en cuenta que tiene - --drop
al final que sobrescribirá su base de datos de producción, --drop
con cuidado!
Se ocupa de los datos del cliente, pw y del servidor de meteor mongo --url ...
que meteor mongo --url ...
después de 1 minuto y es realmente molesto tratar de copiar y pegar dentro de ese tiempo.
#!/usr/bin/env bash
mongodump -h 127.0.0.1:3001 -d meteor -o ~/www/APPNAME/server/dump
IN=`meteor mongo --url APPNAME.meteor.com`
client=`echo $IN | awk -F''mongodb://'' ''{print $2}'' | awk -F'':'' ''{print $1}''`
echo $client
pw=`echo $IN | awk -F'':'' ''{print $3}'' | awk -F''@'' ''{print $1}''`
echo $pw
serv=`echo $IN | awk -F''@'' ''{print $2}'' | awk -F''/'' ''{print $1}''`
echo $serv
mongorestore -u $client -h $serv -d APPNAME_meteor_com dump/meteor -p $pw --drop
Puedes usar mongorestore
.
Es casi lo mismo que lo que ya hiciste.
En su primera línea: meteor mongo --url myApp.meteor.com
simplemente quite la última parte para que la línea lea: meteor mongo --url
. Cuando se ejecute en su máquina local, obtendrá la información para la instancia local de su aplicación de meteoros. Desde ese punto, puede usar mongorestore
para restaurar su base de datos local de la manera que ya lo hizo de forma remota.
Solía meteor reset
un meteor reset
antes de un almacén de memoria, solo para asegurarme de que mi base de datos está vacía, pero no sé si es realmente necesario.
Tenga en cuenta que la aplicación debería estar ejecutándose al hacer esto.
Terminé escribiendo un script para descargar la base de datos de meteoritos. Compruébelo en https://github.com/AlexeyMK/meteor-download
Uso (en la raíz de su aplicación):
curl https://raw.github.com/AlexeyMK/meteor-download/master/download.sh > download.sh
./download.sh yourapp.meteor.com`