猫型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

執筆者:

関連記事

sqlserver

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

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

mysql

MySQLの予約語はバッククォーテーション囲んで使用する

列名に”from”や”to”を使用したいことがあるはずです。 そうした場合は”`”(バッククォーテーション)で囲みましょう。 insert into m …

mysql

utilitiesのmysqlrplshowを使いたい

かれこれ3日ほどはまったので恥を忍んでここに記載しておきます :x001: 構成は以下の通りです。 Windows8:192.168.0.99。mysqlrplshowを実行する └centos:19 …

sqlserver

SQLSERVER インストール後にDataをDドライブ(別ドライブへ)移動する方法

通常OSはCドライブ、データはDドライブなどの別ドライブを使用します。 SQLSERVERではデータの肥大化が起こりうる実データファイル(mdfやldf)をCドライブ以外に変更したい場面は多いはずです …

mysql

SQLで時間の重複をチェックする

同じ期間のデータは事前にチェックしてエラーにするという処理は、 あらゆる場面で想定されそうなことですが、 以外と難しかったのでここに方法をのこしておきます。 他にも素晴らしい方法があると思いますが、 …