使用Shell脚本,实现备份MySQL数据库
使用Shell脚本,实现备份MySQL数据库
最近在公司非常闲,通过在公司和在家里不停的学习,花5天学习了Linux和Shell脚本的相关知识,这里就做一个Shell编程的综合案例,总结一下自己之前的知识
需求分析:
1)每天凌晨两点备份数据库yuanchangliang到/mnt/backup/db
2)备份开始和备份结束能够给出提示信息
3)备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如:
4)在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除。
创建Shell脚本
我是在/mnt目录下创建了一个mysql_backup.sh脚本文件
[root@localhost mnt]# vim mysql_backup.sh
然后在创建的Shell脚本中编写实现逻辑的代码,代码如下:
代码实现
#!/bin/bash
#完成数据库的定时备份
#备份的路径
BACKUP=/mnt/backup/db
#当前的时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可以输出变量调试
#echo ${DATETIME}
echo "==========开始备份==========="
echo "备份的路径是 $BACKUP/$DATETIME.tar.gz"
#主机
HOST=localhost
#用户名
DB_USER=root
#密码
DB_PWD=root
#备份数据库名
DATABASE=yuanchangliang
#创建备份的路径
#如果备份的路径文件夹存在就使用,否则创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份数据库的指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm -rf $BACKUP/$DATETIME
#删除10天前的备份文件(-exec rm -rf {} \是固定写法,删除查询出来的数据)
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "==========备份完成==========="
将以上的Shell脚本加入到crontab中定时自动执行
通过以上几步,就可以实现在Linux中定时备份mysql数据库中的数据
如果想要立刻执行数据备份,可以直接执行以下命令:
[root@localhost mnt]# ./mysql_backup.sh
以上,Linux和Shell学完了,接下来我会陆续写一些Linux和Shell相关的总结和知识点
-----我是“道祖且长”,一个在职场“苟且偷生”的Java程序员
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~