#!/bin/sh
#--データベースバックアップ用(テーブル単位)--
#--config--
#DBユーザー名
DB_USER=ユーザー名
#DBパスワード
DB_PW=パスワード
#DBサーバー
DB_SERVER=localhost
#バックアップファイル保持期間(日数)
KEEPDAY=7
#バックアップファイル保存場所
SAVE_DIR=保存場所
#今日の日付
TODAY=`date +'%Y%m%d'`
#MySQL用パス
PATH=/bin:/usr/bin:/usr/local/bin
#--データベース名取得--
echo "SHOW DATABASES;" > ${SAVE_DIR}GetDataBaseList.sql
mysql -u ${DB_USER} -p${DB_PW} < ${SAVE_DIR}GetDataBaseList.sql > ${SAVE_DIR}GetDataBaseList.txt
rm ${SAVE_DIR}GetDataBaseList.sql
sed -e '1,1d' ${SAVE_DIR}GetDataBaseList.txt > ${SAVE_DIR}DataBaseList.txt
rm ${SAVE_DIR}GetDataBaseList.txt
#--データベース単位で処理--
cat ${SAVE_DIR}DataBaseList.txt | while read DB_NAME
do
#--データベース名でディレクトリ作成--
BK_DIR=${SAVE_DIR}/${DB_NAME}
mkdir -p ${BK_DIR}
#バックアップファイル名
BK_FILE=${BK_DIR}/bak_db_${DB_NAME}_${TODAY}.sql
#当日日付のデータがあれば削除
rm -f ${BK_FILE}
#--データベースのバックアップ--
mysqldump -Q -R --host=${DB_SERVER} --user=${DB_USER} --password=${DB_PW} --single-transaction ${DB_NAME} > ${BK_FILE}
gzip -9 ${BK_FILE}
#保持期間を過ぎたバックアップファイルの削除--
find ${BK_DIR}/ -mtime +${KEEPDAY} -name "*.sql.gz" | xargs rm -f
done
rm ${SAVE_DIR}DataBaseList.txt