#!/bin/bash
############### 你要修改的地方從這裡開始 ###############
MYSQL_PATH=mysql			# MySQL程式路徑
MYSQLDUMP=mysqldump		# MySQLDUMP程式路徑
MYSQLCHECK=mysqlcheck		# MySQLCHECK程式路徑
MYSQL_USER=root			# MySQL使用者名稱
MYSQL_PASS=9uwrZuf852fuVRjL	# MySQL使用者密碼
MAIL_TO=hide1hide@ymail.com	# 資料庫發送到的郵箱
HOSTNAME=520.be			# 主機名稱
BACKUP_DIR=/usr/src/backup		# 備份檔的資料夾
############### 你要修改的地方從這裡結束 ###############
#
#定義資料庫的名字和舊資料庫的名字
DBName=$HOSTNAME-DB_$(date +"%Y%m%d").tar.gz
#刪除本地7天前的資料
cd $BACKUP_DIR
rm -f $BACKUP_DIR/$HOSTNAME-DB_$(date -d -7day +"%Y%m%d").tar.gz
#最佳化並自動修復資料庫
$MYSQLCHECK -u $MYSQL_USER -p$MYSQL_PASS -oA --auto-repair > /dev/null 2>&1
#輸出資料庫，如果使用ROOT帳號會輸出成一個資料庫一個SQL檔
for db in `$MYSQL_PATH -u $MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
($MYSQLDUMP -u $MYSQL_USER -p$MYSQL_PASS --single-transaction --skip-lock-tables ${db} > ${db}.sql)
done
#壓縮所有資料庫為一個壓縮檔
rm -f information_schema.sql mysql.sql performance_schema.sql
tar zcfP $BACKUP_DIR/$DBName $BACKUP_DIR/*.sql
rm -f $BACKUP_DIR/*.sql
#附件方式寄送資料庫壓縮檔到信箱，如壓縮檔超過25MB請勿使用gmail信箱，Yahoo很會掉信也別用
echo "DBBACKUP" | mutt -s "$DBName" -a $BACKUP_DIR/$DBName $MAIL_TO