备忘:
环境:RHEL5 MySQL5.5
1、 每天运行一次
cd /etc/cron.daily
2、编写自动备份
vi mysqlbackup.sh
#!/bin/sh
filename=`date +\%Y-%m-%d`
username="backup"
passwd="backup"
host="127.0.0.1"
mysql_bin_dir="/usr/local/mysql/bin"
mysqlbackup_dir="/data/mysqlbackup"
gzip="/bin/gzip"
mk="/bin/mkdir"
sock="/tmp/mysql.sock"
test ! -w $mysqlbackup_dir && echo "Error: $mysqlbackup_dir is un-writeable." && exit 0
test ! -d "$mysqlbackup_dir/0/" && $mk "$mysqlbackup_dir/0/"
#备份所有包含dotoyo字符的数据库和cms数据库
all_db="$($mysql_bin_dir/mysql -u $username -h $host -p$passwd -S $sock -Bse ' show databases where `database` like "'"dotoyo%"'" or `database` like "'"cms"'" ')"
for db in $all_db
do
#echo "db:$db"
$mysql_bin_dir/mysqldump -u $username -h $host -p$passwd $db -S $sock | $gzip -9 > "$mysqlbackup_dir/0/$db.$filename.gz"
done
#只保留一周的备份
test -d "$mysqlbackup_dir/6/" && rm -rf "$mysqlbackup_dir/6"
for int in 5 4 3 2 1 0
do
if(test -d "$mysqlbackup_dir"/"$int")
then
#一定要注意+号两边空格
next_int=`expr $int + 1`
mv "$mysqlbackup_dir"/"$int" "$mysqlbackup_dir"/"$next_int"
fi
done
exit 0;
3、chmod +x mysqlbackup.sh
4、创建目录/data/mysqlbackup
5、测试./mysqlbackup.sh
6、重启
也可以采用crontab -e来实现定时执行
/////////////////////////////////////////////////////
利用crontab,系统每天定时备份mysql数据库
利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。
1、创建保存备份文件的路径/mysqldata
#mkdir /mysqldata
2、创建/usr/sbin/bakmysql文件
#vi /usr/sbin/bakmysql
输入
rq=` date +%Y%m%d `
tar zcvf /mysqldata/mysql$rq.tar.gz /var/lib/mysql
或者写成
rq=` date +%Y%m%d `
mysqldump --all-databases -u root -p密码 > /mysqldata/mysql$rq.sql
/var/lib/mysql是你数据库文件的目录,部分用户是/usr/local/mysql/data,每个人可能不同
/mysqldata/表示保存备份文件的目录,这个每个人也可以根据自己的要求来做。
3、修改文件属性,使其可执行
# chmod +x /usr/sbin/bakmysql
4、修改/etc/crontab
#vi /etc/crontab
在下面添加
01 3 * * * root /usr/sbin/bakmysql
表示每天3点钟执行备份
5、重新启动crond
# /etc/rc.d/init.d/crond restart