Database JUNKY

MySQL,MariaDBを中心としたブログです

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]