技术点分享--基于Shell编程完成数据库的定时备份
一. 前言
最近有一个学员面试成功上岸,在公司开发时遇到了这么一个需求:领导要求他编写一个shell脚本,完成定时备份数据库的需求。所以今天文哥就在这里写了一个基于shell脚本,对数据库进行定时备份的案例,希望对大家能够有所帮助。
二. 案例场景
1.需求分析
每天凌晨2:30备份数据库day01到/data/backup/db;
备份开始和备份结束的时候,要给出相应的提示信息;
备份后的文件要以备份时间为文件名,并打包成tar.gz的格式,比如:2021-09-15_230201.tar.gz;
在备份的同时,要检查是否有10天前备份的数据库文件,如果有就将其删除。
2.思路分析
三. 需求实现
我们在shell脚本里面输入以下内容:
我们输出一下时间,看看脚本编写是否有误:
接下来我们继续编写脚本:
此时我们可以继续测试脚本是否正确,看看有没有为我们创建备份目录。
[root@qfedu sbin]# ./mysql_db_backup.sh
我们在根目录去查看备份目录是否存在:
[root@qfedu 2022-09-07_232210]# pwd
/data/backup/db/2022-09-07_232210 # 我们发现备份目录以及自动创建完成
我们继续编写shell脚本:
# 备份数据库
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
现在我们执行脚本,来测试一下:
我们继续编写shell脚本:
我们现在测试一下脚本,看看是否写正确:
我们继续编写shell脚本:
# 删除10天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "数据库${DATABASE}成功...."
接下来我们使用crontab -e指令编写定时任务:
[root@qfedu sbin]# crontab -e
编写定时任务:
30 2 * * * /usr/bin/mysql_db_backup.sh
这样我们编写备份数据库的脚本就完成了,最后脚本代码如下:
至此,我们就完成了数据库的定时备份案例,希望能够对大家有所帮助。
相关推荐HOT
更多>>如何添加Java环境变量?
要添加Java环境变量,可以按照以下步骤:并安装Java开发工具包(JDK)、找到Java安装路径、设置JAVA_HOME环境变量、添加Java可执行文件路径到PATH...详情>>
2023-05-04 11:00:56从零开始学Java之String字符串的编码
对很多小白来说,可能不明白什么是字符编码,也不知道为什么要有字符编码,所以先来给大家简要地介绍一下字符编码。详情>>
2023-05-04 10:21:02新手速来!几步带你掌握MyBatis Plus
Mybatis-Plus(简称MP)是一款Mybatis的增强工具,它是在Mybatis的基础上实现的简化开发工具。Mybatis-Plus给我们提供了开箱即用的CRUD操作、自动...详情>>
2023-04-28 10:57:09学习java需要什么基础?基础知识有哪些?
网络编程:了解基本的网络编程概念和协议,熟悉 Java 网络编程 API。建议在学习 Java 之前,先学习一些基础的编程语言,如 C 或 Python 等,这...详情>>
2023-04-28 10:41:14