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
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
186 0
|
1天前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
67 10
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
2天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
14 3
|
2天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
12 3
|
26天前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
21 2
|
1月前
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
85 1
|
1月前
|
安全 关系型数据库 MySQL
MySQL用户备份
【10月更文挑战第2天】MySQL用户备份
53 3
|
30天前
|
Oracle 关系型数据库 数据库
oracle数据恢复—Oracle数据库文件损坏导致数据库打不开的数据恢复案例
打开oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有:控制文件损坏、数据文件损坏、数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux01.dbf文件,启动数据库依然有许多查询报错。export和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库层面无法修复数据库。由于system和用户表空间的数据文件是正常的,
|
3天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
14 4
|
1天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
5 1

推荐镜像

更多
下一篇
无影云桌面