Linux之Shell编程定时备份数据库案例


一、数据库备份案例

在这里插入图片描述需求分析
1.每天凌晨2:30备份数据库hspedu到/data/backup/db
2.备份开始和备份结束能够给出相应的提示信息
3.备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如:2021-03-12_230201.tar.gz
4.在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除。

mysql_backup.sh

#!/bin/bash
#备份目录
BACKUP=/data/backup/db
#当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo $DATETIME
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=lplinuxmysql
#备份的数据库名
DATABASE=lpstudy
#数据库地址
HOST=localhost

#创建备份目录,如果不存在,就创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"

#备份数据库
mysqldump -u${
    
    DB_USER} -p${
    
    DB_PW} --host=${
    
    HOST} -q -R --database ${
    
    DATABASE} | gzip > ${
    
    BACKUP}/${
    
    DATETIME}/$DATETIME.sql.gz
#将文件处理成tar.gz
cd ${
    
    BACKUP}
tar -zcvf $DATETIME.tar.gz ${
    
    DATETIME}
#删除对应的备份目录
rm -rf ${
    
    BACKUP}/${
    
    DATETIME}

#删除10天前备份的文件
find ${
    
    BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {
    
    } \;
echo "备份数据库${DATABASE} 成功"

定时执行crontab -e

30 2 * * * /root/shcode/mysql_backup.sh

猜你喜欢

转载自blog.csdn.net/hsuehgw/article/details/129772824