linux 下面通过 cron 定时备份mysql
-
yum install vixie-cron
-
yum install crontabs
-
service crond start 开机自启
-
cat /etc/crontab 查看
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置crontab -u //设定特定用户的定时服务
crontab -l //列出当前用户定时服务内容
crontab -r //删除当前用户的定时服务
crontab -e //编辑当前用户的定时服务
在设定编辑之前都建议列出服务查看一下:crontab -l -
crontab -e 进入 设置脚本 * * * * /opt/dump_mysql.sh 语法
mysql 简单备份脚本
在执行shell脚本的时候,会出现‘$’\r’: 未找到命令’错误。
原因分析:在windows下编写的脚本,上传到服务器,存在多余的空格或换行,导致报错
-
解决办法
手动删除多余空格或换行
-
解决办法:
安装dos2unix
yum install dos2unix
使用dos2unix对脚本转换
dos2unix xxx.sh
#用户名
username=root
#密码
password=123456
#将要备份的数据库
database_name=mail
#保存备份文件最多个数
count=30
#备份保存路径
backup_path=/app/mysql_backup
#日期
date_time=`date +%Y-%m-%d-%H-%M`
#如果文件夹不存在则创建
if [ ! -d $backup_path ];
then
mkdir -p $backup_path;
fi
#开始备份
mysqldump -u $username -p$password $database_name > $backup_path/$database_name-$date_time.sql
#开始压缩
cd $backup_path
tar -zcvf $database_name-$date_time.tar.gz $database_name-$date_time.sql
#删除源文件
rm -rf $backup_path/$database_name-$date_time.sql
#更新备份日志
echo "create $backup_path/$database_name-$date_time.tar.gz" >> $backup_path/dump.log
#找出需要删除的备份
delfile=`ls -l -crt $backup_path/*.tar.gz | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于阈值
number=`ls -l -crt $backup_path/*.tar.gz | awk '{print $9 }' | wc -l`
if [ $number -gt $count ]
then
#删除最早生成的备份,只保留count数量的备份
rm $delfile
#更新删除文件日志
echo "delete $delfile" >> $backup_path/dump.log
fi
网友评论