mysql定时备份mysql数据库与自动清理过期备份数据

本文档展示了如何使用Shell脚本来备份MySQL数据库,并配置定时任务在每天凌晨三点执行备份。脚本包括了删除旧备份的逻辑,以保持指定天数内的数据。同时,还演示了为脚本添加可执行权限和使用crontab设置定时任务的方法。
摘要由CSDN通过智能技术生成

1,编辑备份脚本shell文件 mysql_backup.sh

#备份数据库

#数据库备份保存地址
data_out_dir=/data/sqlbak
#mysql连接地址
host=rm-2liblsnrnsdjdkjf.mysql.rds.aliyuncs.com
#mysql端口号
port=3306
#mysql账号
username=root
#mysql密码
password=123456
#默认数据保留天数
defaultDataSaveDay=15


#删除旧数据
#参数1:备份文件夹路径 参数2:数据保存天数
deleteOldData(){
	# 备份文件夹路径;
	back_path_home=${1};
	# 数据保存天数
	dataSaveDay=${2};
	
	#按时间倒序列出文件
	apiInfo=(`ls -rt ${back_path_home}`)
	
	for apiName in ${apiInfo[*]} ;
	
	do
		FILE_DRI=${back_path_home}/$apiName
		
		#查找目录中更改时间在dataSaveDay日以前且名称后缀维.sql.gz的文件
		for file_pwd in $(find $FILE_DRI -type f -mtime +${dataSaveDay} -name *.sql.gz);
		do
		#echo $file_pwd
		file_size=$(du -sh $file_pwd | awk '{print $1}')
		rm -rf ${file_pwd}
		echo "删除${dataSaveDay}天前文件---->${file_pwd}";
		
		if [ ! -f "${file_pwd}" ]; then
			rm_date=`date +"%F %T"`
			echo "${rm_date} | ${file_pwd} | ${file_size} 已删除"
		else
			rm_date=`date +"%F %T"`
			echo "${rm_date} | ${file_pwd} | ${file_size} 删除失败 "
		fi
		done
		
	done
}

#备份数据库方法
#参数1:数据库名称 参数2:数据保存天数
backupDatabase(){
	#数据库名称
	databaseName=${1};
	# 数据保存天数
	dataSaveDay=${2:-${defaultDataSaveDay}};
	
	#sql文件输出的文件夹路径
	sql_path=${data_out_dir}/${databaseName};
	#当前时间
	now_time=`date +'%Y-%m-%d.%H.%M.%S'`;
	#输出sql文件的全路径
	sql_file=${sql_path}/${databaseName}_${now_time}.sql.gz;
	#文件夹不存在则创建文件夹
	mkdir -p ${sql_path};
	
	echo "开始备份数据库${databaseName}";
	mysqldump --opt --host=${host} -u${username} -p${password} ${databaseName} | gzip > ${sql_file};
	echo "备份完毕";
	
	#删除旧数据
	deleteOldData ${sql_path} ${dataSaveDay}
}

#备份taotao数据库,保存30天内的备份文件
backupDatabase taotao 30;
#备份oa数据库,默认保存15天内的备份文件
backupDatabase oa;

2,给可执行文件授权

chmod +x  mysql_backup.sh

3,加入定时任务

打开定时任务编辑: crontab -e

添加一行命令(每天凌晨三点执行命令):  0 3 * * * /home/shell/mysql_backup.sh

保存

完毕;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值