Подтвердить что ты не робот

Монгорестор, от сервера производства метеоров до локального

Я нашел много хороших инструкций о том, как использовать mongodump и mongorestore, для резервного копирования моего сервера производства метеоров и восстановления резервной копии, если это необходимо:

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]

То, что я не нашел, является объяснением того, как восстановить резервную копию в моем локальном приложении метеоритов. У меня есть выход mongodump в папке моего приложения. Я не уверен, могу ли я использовать mongorestore или если есть что-то еще, что я должен делать.

4b9b3361

Ответ 1

Самый простой способ, который я нашел:

  • cd в вашем проекте и выполните команду meteor
  • в другом терминале:

mongorestore -h 127.0.0.1 --port 3001 -d meteor dump/meteor

измените 127.0.0.1, если ваш localhost имеет другой IP-адрес и 3001 на порт, на котором вы используете mongodb (обычно это 3001 или 3002, поэтому попробуйте оба), dump/meteor - это путь к дамп, который вы создали ранее.

Также самый простой способ экспортировать локальный db:

  • cd в вашем проекте и выполните команду meteor
  • В другом терминале:

mongodump -h 127.0.0.1 --port 3001 -d meteor

при необходимости измените localhost ip и порт., В результате папка дамп/метеор с файлами db будет создана в папке cd перед запуском mongodump.

Удачи.

Ответ 2

Чтобы выполнить обратное, отправив данные локального приложения в производственное приложение, я написал эту небольшую оболочку script. Это было полезно, когда я разрабатываю локально и просто получаю демо-синхронизацию для просмотра клиентом. Обратите внимание, что в конце есть --drop, который перезапишет вашу производственную базу данных, используйте с осторожностью!

Он обрабатывает данные клиента, pw и сервера от meteor mongo --url ..., срок действия которых истекает через 1 минуту, и это действительно раздражает, чтобы попытаться скопировать-вставить в течение этого времени.

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

Ответ 3

Это то, что я делаю:

я. Создайте дамп mongo на сервере

    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. Загрузите дамп в машину разработки и распакуйте в /tmp

    scp [email protected]$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. Обновление локальной базы данных развития метеоров

    mongorestore --db meteor  -h localhost --port 8082 --drop /tmp/APPNAME_$DATE/tmp/APPNAME_$DATE/APPNAME

Ответ 4

Вы можете использовать mongorestore.

Это почти то же самое, что и вы уже сделали.

В вашей первой строке: meteor mongo --url myApp.meteor.com просто удалите последнюю часть, чтобы строка читала: meteor mongo --url. При выполнении на вашем локальном компьютере вы получите информацию для локального экземпляра вашего приложения meteor. С этого момента вы можете просто использовать mongorestore, чтобы восстановить локальную базу данных так, как вы уже делали удаленно.

Я использую meteor reset перед mongorestore, чтобы убедиться, что мой db пуст, но я не знаю, действительно ли это необходимо.

Обратите внимание, что при выполнении этого приложения приложение должно выполняться.

Ответ 5

В итоге я написал script, чтобы загрузить базу данных метеоров. Проверьте это на https://github.com/AlexeyMK/meteor-download

Использование (в корне вашего приложения):

curl https://raw.github.com/AlexeyMK/meteor-download/master/download.sh > download.sh        
./download.sh yourapp.meteor.com`

Ответ 6

Я использую Google Cloud для размещения в Meteor и написал собственные сценарии.

У меня это работает на cronjob для резервного копирования в облачное хранилище 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

Затем для восстановления локально я создал еще один script, который загружает резервную копию из облачного хранилища Google, сохраняет локально, а затем выполняет локальное восстановление:

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 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.'

У меня это работает с Meteor, глупо просто и отлично работает:) Просто переключите имя db на meteor и порт на 3001 (или любой другой конфиг, который у вас есть). Метеоро-агностик работает с любым хозяином/платформой mongodb.