备份mysql数据库脚本。
手动创建目录/var/backups/mysqldata 也可以自定义,只需修改变量backup_dir的值即可。
#!/bin/bash #mysql备份脚本 database=test001 mysql_user=root mysql_password=123.com backup_dir=/var/backups/mysqldata name=`date "+%Y_%m_%d"` for i in $database do [ -d ${backup_dir}/${i} ] || mkdir ${backup_dir}/${i}/ mysqldump -u$mysql_user -p$mysql_password --database $i > ${backup_dir}/${i}/${i}_${name}.sql file_n=`ls ${backup_dir}/${i}/ | wc -l` rm_file=`ls -l ${backup_dir}/${i}/ | head -2 | tail -1 | awk ‘{print $9}‘` if [ $file_n -gt 3 ] then rm -f ${backup_dir}/${i}/$rm_file fi done
#!/bin/bash
#mysql备份脚本
database=test001 #定义要备份的数据库,以空格隔开
mysql_user=root #定义备份数据库使用的用户
mysql_password=123.com #定义用户密码
backup_dir=/var/backups/mysqldata #定义备份到的目录
name=`date "+%Y_%m_%d"` #定义备份名称后缀,这里以时间为后缀
for i in $database
do
[ -d ${backup_dir}/${i} ] || mkdir ${backup_dir}/${i}/
#判断是否有数据库同名目录,若没有则创建一个
mysqldump -u$mysql_user -p$mysql_password --database $i > ${backup_dir}/${i}/${i}_${name}.sql
#使用mysqldump对数据库进行备份
file_n=`ls ${backup_dir}/${i}/ | wc -l`
#查看一个备份目录下文件个数
rm_file=`ls -l ${backup_dir}/${i}/ | head -2 | tail -1 | awk ‘{print $9}‘`
#查看备份目录下第一个文件名,我这里查看的是第二行,因为使用ls -l的话,第一行显示的目录详情
if [ $file_n -gt 30 ]
#判断如果一个备份目录中的备份文件数是否大于30个
then
rm -f ${backup_dir}/${i}/$rm_file
#如果文件数大于30个的话,则删除第一个文件,可以理解为最多保留三十天的备份文件
fi
done
在crontab中写入计划任务,每天执行一次脚本即可。
本文出自 “西门吹牛” 博客,请务必保留此出处http://taixin.blog.51cto.com/11725086/1828377
原文地址:http://taixin.blog.51cto.com/11725086/1828377