LoginSignup
0
1

More than 5 years have passed since last update.

AWSのDBからローカルDBへのエクスポート&インポートを一発でやるシェルスクリプト

Last updated at Posted at 2016-11-07

AWSのDBをローカルにインポートするシェルスクリプト

今までSequel ProでAWSからやっていたことを、シェルで簡単に実行できるようにしたときのメモです

sh aws2local.sh

スクリーンショット 2016-11-07 17.07.08.png

コード

aws2local.sh
# pvコマンドをつかうのでなかったらインストールします。
if ! which pv > /dev/null 2>&1 ; then  brew install pv ; fi

# AWS database setting. AWSのアクセス情報
AWS_DB_HOST=xxx-production.abc1234.ap-northeast-1.rds.amazonaws.com
AWS_DB_NAME=xxx_production
AWS_DB_USER=xxx
AWS_DB_PASS=xxx

# Local database setting. ローカルのアクセス情報
LOCAL_DB_HOST=localhost
LOCAL_DB_NAME=xxx_development
LOCAL_DB_USER=root

# Execute a command for export and import. AWS => ローカルのエクスポートとインポートを実行
time \
    mysqldump \
    --host=$AWS_DB_HOST --port 3306 \
    --user=$AWS_DB_USER --password=$AWS_DB_PASS \
    --single-transaction --quick --routines --triggers --compress \
    $AWS_DB_NAME 2>/dev/null | pv -s 883m | mysql \
    --host=$LOCAL_DB_HOST --port 3306 \
    --user=$LOCAL_DB_USER \
    $LOCAL_DB_NAME

解説

  • time 実行時間を計測しています
  • pv 進捗をプログレスバーで表示。883mは883MBのデータがパイプを通ると完了という意味になります
  • mysqldump DBサーバにアクセスしてDBをコピーするコマンドです
    • --single-transaction 書き込みロックも読み取りロックしないオプション
    • --quick 1行ずつ読み込んでダンプするのでメモリを圧迫しないようにするので大容量DB向き
    • --routines ストアドプロシージャもダンプ
    • --triggers トリガーもダンプ
    • --compress 送受信される情報をすべて圧縮
0
1
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
0
1