備份數據庫裏面除系統庫外的全部數據庫 ./script_name.sh
database.sh
#!/bin/bash
#backup all tables of database except system'tables and delete databasesbackup before 20mysql
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:~/binsql
#數據庫用戶名
user="root"
#數據庫密碼
passwd="aaa12345"
#備份文件存放目錄
backupdir="/data/backup/"
#備份數據庫名
dbname="employees"
#備份表名
dbname=$(mysql -u$user -p$passwd -ss -e "show databases;")
#當前時間
date=$(date +%Y%m%d%H%M%S)
#過時時間
outtime=20
#判斷備份目錄是否存在
if [ ! -d $backupdir ];then
mkdir -p $backupdir
fi
for databasename in $dbname
do
#判斷是否爲系統表
if [ $databasename != "mysql" ] && [ $databasename != "information_schema" ] && [ $databasename != "test" ];then
#備份出來的文件名
backfile=$databasename'_'$date.sql
#壓縮後的文件名
tarfile=$backfile.tar.bz2
mysqldump -u$user -p$passwd $dbname $tablename > $backupdir$backfile
#tar
if [ $backfile ];then
tar -jcvf $tarfile $backupdir$backfile
rm -f $backfile
fi
fi
done
#delete before 20
#find $backupdir -name *.tar.bz2 -mtime +$outtime |xargs rm -rf
find $backupdir -name *.tar.bz2 -mtime +$outtime -exec rm -f {} \;
###自動天天備份
[root@gyf backup]# crontab -e
01 12 * * * sh /data/backup/databases.sh
重啓生效
[root@gyf backup]# /etc/init.d/crond restart
數據庫