MySQL数据库自动备份及自动删除过期的备份文件

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 脚本将实现MySQL数据库自动备份及自动删除过期的备份文件,这个脚本已经在生产环境中应用了(MySQL版本为8.0但5.7、5.6 也通用)

一、备份脚本说明

#!/bin/bash
DB_USER="xxx"
DB_PASS="xxx"
DB_NAME="xxx"
DAY=`date +%Y%m%d`
mysqldump -hlocalhost -u$DB_USER -p$DB_PASS $DB_NAME | gzip>/xxx/xxx/$DAY.sql.gz
find /xxx/xxx -name "*.sql.gz" -type f -mtime +3 -exec rm -rf {} \; > /dev/null 2>&1
#!/bin/bash      指此脚本使用/bin/bash来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径                                                                   
DB_USER="xxx"    数据库账号(此帐号权限一定要足够)
DB_PASS="xxx"    数据库密码
DB_NAME="xxx"    要备份数据库的名称
DAY=`date +%Y%m%d`   获取Linux当前时间用作备份文件的名称,方便查找备份文件
mysqldump -hlocalhost -u$DB_USER -p$DB_PASS $DB_NAME | gzip>/xxx/xxx/$DAY.sql.gz  mysqldump是MySQL自带的逻辑备份工具(通过mysqldump 备份功能将备份数据通过道命令连接到压缩命令在(>)输出重定向到指定目录下的sql 文件并以日期命名和压缩打包sql文件节从而节省磁盘空间
find /xxx/xxx -name "*.sql.gz" -type f -mtime +3 -exec rm -rf {} \; > /dev/null 2>&1    通过Linux自带文  件查找命名去查找备份目录下以.sql.gz结尾的文件并且条件是文件类型是文件和是三天前建立的文件,如果满足条件就把这个文件删除了(这样我们就不用手动去删除备份文件了)并且将命令执行的结果返回到 空设备(这里大家也可以改成将备份得到的结果写到文件里这样就可以有个备份日志文件了)

mysqldump 简介:
mysqldump是MySQL自带的逻辑备份工具。它的备份原理是通过协议连接到MySQL数据库,将需要备份的数据查询出来,将查询出来的数据转换成对应的 insert语句,当我们需要还原这些数据时,只要执行这些insert语句,即可将对应的数据还原。

mysqldump的优点:可以直接使用文本处理工具处理对应的备份数据,因为备份数据已经被mysqldump转换为了对应的insert语句,所有我们可以借助文件系统中的文本处理工具对备份数据进行直接处理。

mysqldump的缺点:当数据为浮点数据类型时会出现精度丢失。mysqldump的备份过程属于逻辑备份,备份速度、恢复速度与物理备份工具相比较慢而且mysqldump备份的过程是串行化的,不会并行的进行备份。如果想要并行备份,可以使用mydumper。
mysqldump对myisam存储引擎只支持温备,通过mysqldump对使用myisam存储引擎的表进行备份时,最多只能实现温备,因为在备份时会对备份的表请求锁,当备份完成后,锁会被释放。

1
(大家请仔细核对代码千万别敲错了哦)

二、备份脚本编写

vim backup.sh (这里新建一个shell 脚本文件最后以.sh进行结尾这是因为方便识别文件类型,文件自行决定)将上面的脚本复制或者手敲进去都可以

:wq (保存脚本文件)

chmod 770 backup.sh (shell 脚本必须具有 (x)执行权限并且其他用户组不能查看或者执行这是因为这个脚保存了数据库的账号和密码的)

2
(保存好的脚本文件如上图)

三、添加任务计划

上面的脚本只实现了数据库的备份以及备份文件的删除还不能自动每天去执行。现在我们去借助Linux的任务计划来达到自动化的效果crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

crond常用命令介绍:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
crontab -e   (我们来新建一个任务,添加如下代码)
00 06 * * * /xxx/xxx/backup.sh   (这个任务的意思是在每天早上六点钟去执行备份脚本目录下的备份脚本00表示分钟  06表示
                                  小时(24小时制)  备份脚本的路径)

:wq (保存离开)

3
(可以看到这台服务器已经添加很多的任务计划了)

四、验证备份结果

1.在备份脚本的目录执行 ./backup.sh 看看备份目录下是否多了数据库备份文件(如何没有请检查代码是否错误或者没有执行权限)

2.备份好的数据文件一定要进行还原测试,千万别到要用备份文件才发现备份文件为空或者无法还原到数据库里那就悲催了!

3.crontab -l 查看任务计划是否被添加了,计划任务是否正确

4.根据自己设置删除备份文件的天数后检查文件是否被删除或者被多删除了

4_jpeg
(这是备份脚本备份的备份文件,可以发现随着数据库数据量的变化备份文件大小也在变化)

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
16天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
24天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
92 3
|
1月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
45 3
|
2月前
|
存储 定位技术 数据库
介绍一下数据库的备份和恢复策略
【10月更文挑战第21】介绍一下数据库的备份和恢复策略
|
1月前
|
数据库
【赵渝强老师】数据库的备份方式
备份数据库是指将数据库中的数据及相关信息保存起来,以便在系统故障时恢复。备份对象不仅限于数据本身,还包括数据库对象、用户权限等。根据备份策略、类型和模式的不同,可分为整体/部分备份、完全/增量备份、一致/非一致备份。文中还附有相关视频讲解。
|
2月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
42 2
|
11天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
80 15
|
5天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
下一篇
DataWorks