使用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中定时自动执行
使用Shell脚本,实现备份MySQL数据库_第1张图片
通过以上几步,就可以实现在Linux中定时备份mysql数据库中的数据

如果想要立刻执行数据备份,可以直接执行以下命令:

[root@localhost mnt]# ./mysql_backup.sh 

以上,Linux和Shell学完了,接下来我会陆续写一些Linux和Shell相关的总结和知识点

-----我是“道祖且长”,一个在职场“苟且偷生”的Java程序员

你可能感兴趣的:(Linux,mysql,shell,java,linux,数据库)