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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 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
相关文章
|
2天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
13 3
|
2天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
12 3
|
16天前
|
存储 定位技术 数据库
介绍一下数据库的备份和恢复策略
【10月更文挑战第21】介绍一下数据库的备份和恢复策略
|
1天前
|
数据库
【赵渝强老师】数据库的备份方式
备份数据库是指将数据库中的数据及相关信息保存起来,以便在系统故障时恢复。备份对象不仅限于数据本身,还包括数据库对象、用户权限等。根据备份策略、类型和模式的不同,可分为整体/部分备份、完全/增量备份、一致/非一致备份。文中还附有相关视频讲解。
|
3天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
14 4
|
1天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
5 1
|
27天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
58 3
Mysql(4)—数据库索引
|
12天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
51 2
|
15天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
61 4
|
20天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?

推荐镜像

更多
下一篇
无影云桌面