MySQL : データベース(スキーマ)毎に分割しダンプする方法
ほぼ自分のメモです。表題の件は、1サーバ内に、複数のデータベース(スキーマ)がある場合、データベースごとにダンプファイルを取得したかったためだけに作成したshell(bash)です。
[shell]
!/bin/bash
wdate=date +"%Y%m%d%H%M%S"
backupdir="/backups"
backupfilepath="${backupdir}/${HOSTNAME}" dbuserid=root dbpasswd=rootpassword
スキーマ名のみを、awkで抽出して抽出したスキーマ分のmysqldumpを実行する
for n in mysql -N -u ${_dbuserid} -p${_dbpasswd} -e "show databases" | awk '{ print $0 }'
; do echo "BackupDirectory >> ${backupfilepath}/${HOSTNAME}.${n}.${wdate}.${HOSTNAME}.dump"
mysqldump -u ${dbuserid} -p${dbpasswd} -x > ${backupfilepath}/${HOSTNAME}.${n}.${wdate}.${HOSTNAME}.dump;
done
exit 0
[/shell]
上記shellを実行した結果
[shell]
./db_backup2.sh
backuppath:/backups/db1.squad.local/db1.squad.local.information_schema.20110830203640.db1.squad.local.dump backuppath:/backups/db1.squad.local/db1.squad.local.cake_test.20110830203640.db1.squad.local.dump backuppath:/backups/db1.squad.local/db1.squad.local.develop.20110830203640.db1.squad.local.dump backuppath:/backups/db1.squad.local/db1.squad.local.mysql.20110830203640.db1.squad.local.dump backuppath:/backups/db1.squad.local/db1.squad.local.performance_schema.20110830203640.db1.squad.local.dump backuppath:/backups/db1.squad.local/db1.squad.local.todo.20110830203640.db1.squad.local.dump backuppath:/backups/db1.squad.local/db1.squad.local.tpkn.20110830203640.db1.squad.local.dump backuppath:/backups/db1.squad.local/db1.squad.local.wikidb.20110830203640.db1.squad.local.dump backuppath:/backups/db1.squad.local/db1.squad.local.wordpress.20110830203640.db1.squad.local.dump backuppath:/backups/db1.squad.local/db1.squad.local.wp_squad.20110830203640.db1.squad.local.dump [/shell]
ちなみになんですが、話はこれで終わります。何かの時に自分がコピペしたいがためだけに記載しております。
あ、あとついでにmysqldumpのオプションをちょっと補足します
[shell] -t, --no-create-info テーブル作成情報(CREATE TABLEステートメント)を書き込まない。 -d, --no-data テーブルのレコード情報を一切書き込まない。テーブルの構造だけをダンプする場合、非常に便利である。 -n, --no-create-db CREATE DATABASE /!32312 IF NOT EXISTS/ db_name;が出力に含まれない。--databasesオプションまたは --all-databasesオプションを指定した場合は、上記の行が追加される。 -x 全てのテーブルをロック -R ストアドプロシージャ(ストアドファンクション)のdumpを取得 [/shell]