AWSのDBをローカルにインポートするシェルスクリプト
今までSequel ProでAWSからやっていたことを、シェルで簡単に実行できるようにしたときのメモです
sh aws2local.sh
コード
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
送受信される情報をすべて圧縮
-