5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

本番環境DBデータをコピーするシェルスクリプト

Last updated at Posted at 2016-03-10

前にHeroku運用で使ってたスクリプト
大概の環境で使えるはず。

MySQLはその辺に転がってそうだし俺にニーズがないから割愛

もちろん実運用時から色々そぎ落としてるので動作未実証

MongoDB

# !/bin/sh
LOCAL_DIR=$(cd $(dirname $0)/..;pwd)/dumps
TARGET_DIR=$LOCAL_DIR/`date +%Y%m%d`
echo "mkdir $TARGET_DIR"
mkdir $LOCAL_DIR
mkdir $TARGET_DIR

# 本番環境DB設定
PRODUCTION_DBNAME=<<DB NAME>>
PRODUCTION_USERNAME=<<USER NAME>>
PRODUCTION_PASSWORD=<<PASS WORD>>
PRODUCTION_HOST=<<DATABASE HOST>>
PRODUCTION_DUMPFILE=production.sql


# ローカル環境
LOCAL_DBNAME=development_database
LOCAL_HOST=0.0.0.0:27017
LOCAL_USERNAME=<<USER NAME>>
LOCAL_PASSWORD=<<PASS WORD>>
LOCAL_DUMPFILE=local.sql


# Monogo DB
# TARGETDIR 向けに 本番環境 dump 作成
mongodump -h $PRODUCTION_HOST -d $PRODUCTION_DBNAME -u $PRODUCTION_USERNAME -p $PRODUCTION_PASSWORD -o $TARGET_DIR --excludeCollectionsWithPrefix=system

# ローカルもバックアップ
mongodump -h $LOCAL_HOST -d $LOCAL_DBNAME -o $TARGET_DIR

# ローカルDB Drop
mongo $LOCAL_DBNAME --eval "db.dropDatabase();"

# ローカルDB にRestore
mongorestore -h $LOCAL_HOST -d $LOCAL_DBNAME $TARGET_DIR/$PRODUCTION_DBNAME

Postgresql

# !/bin/sh
LOCAL_DIR=$(cd $(dirname $0)/..;pwd)/dumps
TARGET_DIR=$LOCAL_DIR/`date +%Y%m%d`
echo "mkdir $TARGET_DIR"
mkdir $LOCAL_DIR
mkdir $TARGET_DIR

# 本番環境DB設定
PRODUCTION_DBNAME=<<DB NAME>>
PRODUCTION_USERNAME=<<USER NAME>>
PRODUCTION_PASSWORD=<<PASS WORD>>
PRODUCTION_HOST=<<DATABASE HOST>>
PRODUCTION_DUMPFILE=production.sql


# ローカル環境
LOCAL_DBNAME=development_database
LOCAL_HOST=0.0.0.0:27017
LOCAL_USERNAME=<<USER NAME>>
LOCAL_PASSWORD=<<PASS WORD>>
LOCAL_DUMPFILE=local.sql

# Postgresqp
# TARGETDIR 向けに 本番環境 dump 作成
PGPASSWORD=$PRODUCTION_PASSWORD pg_dump -C -h $PRODUCTION_HOST -U $PRODUCTION_USERNAME -Fc $PRODUCTION_DBNAME > $TARGET_DIR/$PRODUCTION_DUMPFILE

# ローカルもバックアップ
pg_dump -Fc $LOCAL_DBNAME > $TARGET_DIR/$LOCAL_DUMPFILE

# ローカルDB Drop
psql -c "drop database $TARGET_DIR;" postgres

# ローカルDB にRestore
pg_restore -d $LOCAL_DBNAME $TARGET_DIR/$PRODUCTION_DUMPFILE

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?