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数据库备份脚本 定期备份 压缩的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE自动备份-压缩格式,定期删除.bat

mysql备份脚本-mysqldump

windows server 定期备份数据库脚本

linux脚本定期对日期命名的文件夹打包,Vbs压缩备份文件夹以日期命名

nginx日记切割脚本,mysql定期备份脚本

Linux下超简单的Mysql自动备份+定期删除之前备份文件脚本