猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

DataBase MySQL

mysqldumpでテーブル毎のダンプを圧縮して取得するスクリプト

投稿日:2012年12月13日 更新日:

mysqldumpではデータベースを指定して一括してダンプを取得できます。テーブル毎のダンプも取得できます。

しかし、一括して取得したダンプの1つのテーブルだけをインポートすることはできません。これは1つのテーブルだけをテスト環境で復元させるときにはとても不便です。

また、テーブル毎の取得をしていては、テーブルが変わったりするごとに、スクリプトを変更しなくてはいけません。

なかなかネットでみつからなかったので、作成することにいたしました。

#!/bin/sh
USER_="MySQLユーザー名"
PASS_="MySQLパスワード"
PATH_DUMP="/ダンプの保存場所"
PATH_LOG="/ログの保存場所/dump.log"
MYSQLDUMP="$(which mysqldump)"
MYSQL="$(which mysql)"
TARGET="'DATABASE1','DATABASE2','DATABASE3'" #ダンプを取得したいデータベースを指定
DATE_INF=$(date '+%Y/%m/%d %I:%M:%S ') #ログに出力する日時

res=`$MYSQL -u $USER_ -p$PASS_ -N -e "select concat('$MYSQLDUMP -u $USER_ -p$PASS_ --no-autocommit --database ',TABLE_SCHEMA,' --table ' ,TABLE_NAME ,' | gzip > $PATH_DUMP',TABLE_SCHEMA,'.',TABLE_NAME,'.dmp.gz 2>&1 \\n')  from  information_schema.TABLES WHERE TABLE_SCHEMA not in ('information_schema','mysql') and TABLE_SCHEMA in($TARGET)"`

echo -e $res > out.sh
sh out.sh

if test -s $PATH_DUMP$R.dmp.gz
MSG="$(sh out.sh)"
then
    echo $DATE_INF "Successful!!:Get Data Dump" >> $PATH_LOG 
else
    echo $DATE_INF "Error!!:Get Data Dump" >> $PATH_LOG 
fi

これをcronで起動させれば、指定したデータベースの全てのテーブルのダンプを取得できます。

Gooleアドセンス用336

Gooleアドセンス用336

-DataBase, MySQL

執筆者:

関連記事

mysql

MySQLの文字コードを変更する

日本語を扱うにはutf8にするべきでしょう。 アプリケーション側で接続する際に文字コードを指定することもできます。 string constr = “userid=root;password=pass …

sqlserver

SQLSERVER saでログインできるようにする

私はsaも設定しておくべきだと思います。 そこでsaログインするための確認ポイントです。 INDEX1 ログインを有効にする2 サーバー認証の設定3 名前付きパイプ ログインを有効にする Manage …

mysql

vmwareをアップデートしたらMySQLが起動しなくなった

[root@centos100 log]# service mysql restart MySQL server PID file could not be found! [失敗] Starting …

mysql

MySQLのインポートエラー ERROR 1005 (HY000) (errno: 121)

ダンプをインポートする際にたまにるのがこのエラーです。 ERROR 1005 (HY000) at line 23: Can’t create table ‘./[スキーマ]/ …

mysql

MySQL ERROR: Can’t connect to MySQL server on ‘xxx.xxx.x.xx’ (13)

MySQL ERROR: Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx’ (13) はSELinuxによる接続 …