shell脚本应用——5.Linux定时备份数据库(mysql)

容灾

    数据是每个企业都必须应当重视保护起来的,试想一下,公司新来一位实习生,不小心删了库,如果数据库没有进行备份,真的只能从删库到跑路了....备份数据库,也应该进行异地备份,因为假如这个城市发生了不可挽回的灾难,整个城市都处于灾难中,那在这个城市的数据肯定全没了,如果做了异地备份,那数据还可以找回。

备份数据库其实就是crontab定时执行shell脚本,设定在凌晨的时候将数据库备份一份存起来,每天都这样执行,再把若干天之前的较老的备份删除掉。

首先这里我还是进入到/usr/local/shell 目录下编写脚本

vi mysql_backup.sh

#!/bin/bash
#备份文件存储的目录
BACKUP_DIR=/data/backup/mysql

#以执行的日期作为文件名,以防文件名重复覆盖
DATE=$(date +%Y_%m_%d)

#连接mysql用户名、密码、IP、数据库名,请根据自己的自行修改
#用户名
MYSQL_USER=root

#密码
MYSQL_PWD=123qweASD.

#因为我这是本地备份,就使用localhost
HOST=localohost

#使用的数据库
DATABASE=backup_test

echo "mysql backup start $DATE"
#判断一下如果备份的目录不存在,就创建该目录,两种写法都行,目前我把两种方式都列出了,想尝试方式二的把注释放掉即可
#方式一:
if [ ! -d $BACKUP_DIR/$DATE ]
then mkdir -p $BACKUP_DIR/$DATE
fi
#方式二
#[ ! -d $BACKUP_DIR/$DATE ] && mkdir -p $BACKUP_DIR/$DATE

#执行mysql备份数据库指令   其实最好将此文件进行压缩打包,这里简单保存为一个sql文件
mysqldump -u$MYSQL_USER -p$MYSQL_PWD --host=$HOST $DATABASE > $BACKUP_DIR/$DATE/$DATE.sql

#删除5天前的老的备份
find $BACKUP_DIR -mtime +5 -name "*.sql" -exec rm -rf {} \;

#解释上面这行命令的含义:
#find 是找到命令,找到变量BACKUP_DIR目录下 时间(-mtime) 5天前(+5) ,名字是(-name) 以.sql结尾的("*.sql")
#如果找到了的话(-exec),就执行后面的命令,rm -rf 删除 , {} \ 就是找到的内容。

简单解释一下,将备份文件存在/data/backup/mysql 目录下,以每天的日期作为文件名保存,防止重复。先判断如果这个目录不存在的话,则创建目录,然后使用mysqldump进行备份数据库到/data/backup/mysql,最后删除5天前的备份。

shell脚本写好之后,别忘记给执行权限

chmod +x ./mysql_backup.sh

接着设定每天凌晨3点10分定时执行该shell脚本

crontab -e

会进入编辑页面后,编写(如果里面有内容,就到最后一行追加,里面的内容是别人写的定时执行的内容)

10 3 * * * /usr/local/shell/mysql_backup.sh

完成。

猜你喜欢

转载自blog.csdn.net/chenjing928/article/details/86627748