shellscript シェルスクリプトでデータベースをコピーする

  • コマンドライン一発叩くだけでデータベースをコピーする
  • パスワードなどの情報は別ファイルから読み込む
  • warning がすごく出るので取扱い注意

mysql_db_copy_config

$ cd /path/to/your/project
$ vi mysql_db_copy_config
#!/bin/sh

MYSQL_USER="username"
MYSQL_PASSWORD="password"
MYSQL_DBNAME="dbname"

mysql_db_copy

$ cd /path/to/your/project
$ vi mysql_db_copy
#!/bin/sh

cd `dirname $0`
d=`pwd`

# mysql_db_copy_config を読み込む
source $d/mysql_db_copy_config

# コピーしたい DB を sql ファイルにエクスポートする
mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DBNAME > dump.sql
# コピー先の DB が既に存在している場合は、コピー先の DB を削除する
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e 'drop database `'$MYSQL_DBNAME'_copy`'
# コピー先の DB を新たに作成する
mysqladmin -u $MYSQL_USER -p$MYSQL_PASSWORD create $MYSQL_DBNAME'_copy'
# 先ほどエクスポートした sql ファイルを空の DB にインポートする
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DBNAME'_copy' < dump.sql

# sql ファイルを削除
rm -f $d/dump.sql

echo "created database '"$MYSQL_DBNAME"_copy'"

実行

$ cd /path/to/your/project
# ファイル所有者に実行権限を渡す
$ chmod 744 mysql_db_copy_config
$ chmod 744 mysql_db_copy
# 実行
$ mysql_db_copy

mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
created database 'your_database_name_copy'