web-dev-qa-db-ja.com

流星生産サーバーからローカルまでのMongorestore

私は、mongodumpとmongorestoreを使用して、meteor本番サーバーをバックアップし、必要に応じてバックアップを復元する方法について、多くの優れた手順を見つけました。

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]

私が見つけていないのは、バックアップダンプを復元する方法の説明ですto私のローカル流星アプリ。アプリフォルダーにmongodumpの出力があります。 mongorestoreを使用できるかどうか、または他に何かすることになっていることがあるかどうかはわかりません。

23
Raemon

私が見つけた最も簡単な方法:

  1. プロジェクトでcdを実行し、meteorコマンドを実行します
  2. 別のターミナルで:

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

変化する 127.0.0.1ローカルホストのIPアドレスが異なる場合と3001 mongodbを使用しているポートへ(通常は3001または3002なので、両方試してください)、dump/meteorは、以前に作成したダンプへのパスです。

また、ローカルデータベースをエクスポートする最も簡単な方法:

  1. プロジェクトでcdを実行し、meteorコマンドを実行します
  2. 別のターミナルで:

mongodump -h 127.0.0.1 --port 3001 -d meteor

繰り返しますが、必要に応じてlocalhostのIPとポートを変更します。 。その結果、dbファイルを含むdump/meteorフォルダーは、cdを実行する前にmongodumpフォルダーに作成されます。

幸運を。

37
Alex Alexeev

逆に、ローカルアプリデータを本番アプリに送信するために、この小さなシェルスクリプトを作成しました。ローカルで開発していて、クライアントが表示できるようにデモを同期しているときに便利です。最後に--dropがあり、本番データベースを上書きすることに注意してください。注意して使用してください。

meteor mongo --url ...からのクライアント、pw、およびサーバーのデータを処理します。これは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
5
coreyb

これが私がすることです:

I.サーバーに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 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。ローカル流星開発データベースを更新する

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

5
David Grajal

mongorestoreを使用できます。

それはあなたがすでにしたこととほとんど同じです。

最初の行:meteor mongo --url myApp.meteor.com最後の部分を削除して、行が次のようになるようにします。meteor mongo --url。ローカルマシンで実行すると、meteorアプリのローカルインスタンスの情報が取得されます。その時点から、mongorestoreを使用して、すでにリモートで行った方法でローカルデータベースを復元できます。

私はmeteor reset mongorestoreの前に、私のデータベースが空であることを確認するためだけに、それが実際に必要かどうかはわかりません。

これを行うときは、アプリが実行されている必要があることに注意してください。

3
Martin

結局、流星データベースをダウンロードするためのスクリプトを書くことになりました。 https://github.com/AlexeyMK/meteor-download でチェックしてください

使用法(アプリのルート内):

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

MeteorホスティングにGoogleCloudを使用していて、カスタムスクリプトを作成しました。

私はこれを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

次に、ローカルで復元するために、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'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.'

私はこれをMeteorで動作させており、ばかげてシンプルでうまく機能します:)db名をmeteorに切り替え、ポートを3001(またはお持ちの設定)に切り替えるだけです。流星にとらわれないため、mongodbのホスト/プラットフォームで動作します。

0
Mark Shust