Skip to content

Latest commit

 

History

History
83 lines (53 loc) · 2.22 KB

File metadata and controls

83 lines (53 loc) · 2.22 KB

shell备份数据库

需求分析

  1. 每天2:31备份数据库my1到 /data/backup/db

  2. 备份开始和备份结束能给出相应的提示信息

  3. 备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式

  4. 在备份的同时,检查是否有十天前的数据库文件,并且将其删除

未命名图片

具体步骤:

将脚本放在usr/sbin:这个目录是root用户调用的目录,具有一定的权限

crontab -e:调出定时任务

未命名ds图片

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

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

#备份数据库
mysqldump -u${DB_USER} -p${DB_PW} --host=$(HOST) -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz

#将文件处理为tar.gz
cd  ${BACKUP}
tar -zcvf $DATETIME.tar.gz ${DATETIME}

#删除备份的目录
rm -rf ${BACKUP}/${DATETIME}

#删除十天前的备份文件,按十天查找,按名字查找atr.gz
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库$DATETIME 成功~"
--------------------------------------------------------------------------------------

创建定时任务:

crontab -e
00 23 * * *  root/use/sbin/mysqld.sh
23表示每天的23点的时候执行(注意看下时间是否一致,不一致date -R)
crontab -l    --查看任务

END 链接