一、 创建 dbbackup.sh
脚本文件
- 在新建
/usr/mybin
目录,并cd
切换到目录,编写dbbackup.sh
脚本文件
#!/bin/bash
# 数据库基本信息
DB_HOST=192.168.2.79
DB_DATABASE=ln-lszj
DB_USER=root
DB_PWD=123456789
DB_PORT=3307
#备份目录
BAKDIR=/data/backup/db
#获取当前时间
DATETIME=$(date +%Y%m%d%H%M%S)
#日志
LOG_PATH=${BAKDIR}/logs
LOG_NAME=$(date +%Y%m)
FILE_NAME=${DB_DATABASE}-${DATETIME}
# 1、创建备份目录,如果不存在,则创建
if [ ! -d "${BAKDIR}" ]
then
mkdir -p "${BAKDIR}"
fi
# 创建备份日志目录,如果不存在,则创建
if [ ! -d "${LOG_PATH}" ]
then
mkdir -p "${LOG_PATH}"
fi
# 查看mysql 是否正常运行
mysql_ps=`ps -ef |grep mysql |wc -l`
if [ $mysql_ps == 0 ]
then
echo "当前服务器没有安装Mysql客户端或服务端!" >> ${LOG_PATH}/${LOG_NAME}.log
exit
fi
# 2、备份数据库,
echo "开始备份...$DATETIME" >> ${LOG_PATH}/${LOG_NAME}.log
mysqldump -h${DB_HOST} -u${DB_USER} -p${DB_PWD} -P${DB_PORT} --databases ${DB_DATABASE} > ${BAKDIR}/$FILE_NAME.sql
echo "备份完成...$DATETIME" >> ${LOG_PATH}/${LOG_NAME}.log
#开始压缩
cd $BAKDIR
tar -zcvf ${FILE_NAME}.tar.gz $FILE_NAME.sql
#更新备份日志
echo "$DATETIME 压缩原文件 create ${BAKDIR}/$FILE_NAME.tar.gz" >> ${LOG_PATH}/${LOG_NAME}.log
#删除源文件
rm -rf $BAKDIR/$FILE_NAME.sql
echo "$DATETIME 压缩后删除原文件 delete ${BAKDIR}/$FILE_NAME.sql" >> ${LOG_PATH}/${LOG_NAME}.log
# 保留最新的10份文件
ls -t ${BAKDIR}/*.tar.gz |awk 'NR>10' |xargs rm -rf
#分割线
echo "======================================================================" >> ${LOG_PATH}/${LOG_NAME}.log
- 对脚本进行授权
chmod 755 dbbackup.sh
二. 编写 cron
定时任务
- 定时任务语句
# 每天凌晨1点,执行脚本,对数据库进行备份。
0 1 * * * /usr/mybin/dbbackup.sh
- 控制台输入下面命令
crontab -e
- 将定时任务语句粘贴到最后面,保存并退出
wq
。
注意:如果定时任务不生效,执行下面命令
重启cron服务,以使新任务立即生效,可以使用以下命令来重启cron服务:
在Debian或Ubuntu系统中:sudo service cron restart
在CentOS或RHEL系统中:sudo systemctl restart crond