MySQL数据库备份脚本 定期备份 压缩
Posted 学习使得吾快乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库备份脚本 定期备份 压缩相关的知识,希望对你有一定的参考价值。
linux 使用mysqldump命令备份数据库,gzip进行压缩.只保留固定数量的备份文件,逾期自动删除.
1. 编写脚本 /home/someShells/db_back.sh
脚本内容:
#!/bin/bash
#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/home/mysqlbackup
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
back_tool=mysqldump
#压缩工具
ys_tool=gzip
#将要备份的数据库
database_name=test_db
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
#本处直接将用户和密码写在了数据的配置文件my.cnf,不需要再明文写出
$back_tool $database_name > $backup_dir/$database_name-$dd.sql
#压缩文件
$ys_tool $backup_dir/$database_name-$dd.sql
#写创建备份日志
echo "create $backup_dir/$database_name-$dd.sql.gz" >> $backup_dir/log.txt
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.gz | awk 'print $9 ' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.gz | awk 'print $9 ' | wc -l`
if [ $count -gt $number ];
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile;
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt;
fi
注意事项:
如果是在Win环境下编辑上传的,需要注意换行符的编码和linux下不一样,容易导致脚本运行出错,建议使用NotePad++工具全局替换"\\r"为""
2. 赋予脚本可执行权限
chmod +x /home/someShells/db_back.sh
3. 修改mysql的配置文件
vim /etc/my.cnf
添加内容:
[mysqldump]
user=root
password=root
4.编写定时任务myJob.cron
vim myJob.cron
添加内容:
#分 时 天 月 星期 待执行的脚本
* * * * * /home/someShells/db_back.sh # 每分钟执行一次
关于cron表达式的相关内容可以参照https://blog.csdn.net/weixin_45884459/article/details/113851090
5. 执行定时任务
crontab myJob.cron
#crontab -l 可以查看定时任务是否成功
6. 参考文献
MySQL定时备份数据库(全库备份):https://www.cnblogs.com/letcafe/p/mysqlautodump.html#4841113
以上是关于MySQL数据库备份脚本 定期备份 压缩的主要内容,如果未能解决你的问题,请参考以下文章