Linux下mysql定时任务备份数据库脚本

创建备份目录

编写备份脚本

#!/bin/bash
#数据库用户名称
USER="root"
#数据库密码
PASSWORD="root123"
#数据库
DATABASE="ywtg_new"
#ip
HOSTNAME="localhost"
#备份目录
BACKUP_DIR=/home/ywtg/backup/
#日志文件
LOGFILE=/home/ywtg/backup/ywtg_backup.log
#时间格式
DATE=`date '+%Y%m%d-%H%M'`
#DATE=`date '+%Y%m%d-%H%M'`
#备份文件
DUMPFILE='ywtg'-$DATE.sql
#压缩文件
ARCHIVE='ywtg'-$DATE.sql.tgz
#组装dump命令
OPTIONS="-h$HOSTNAME -u$USER -p$PASSWORD $DATABASE"

#判断备份文件存储目录是否存在,否则创建该目录
if [ ! -d $BACKUP_DIR ] ;
then
        mkdir -p "$BACKUP_DIR"
fi

#开始备份之前,将备份信息头写入日记文件
echo " " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------" >> $LOGFILE
echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE
echo "------------------" >> $LOGFILE

#切换至备份目录
cd $BACKUP_DIR
#使用mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件
/usr/local/mysql/bin/mysqldump $OPTIONS > $DUMPFILE
#判断数据库备份是否成功
if [[ $? == 0 ]]; then
    #创建备份文件的压缩包
    tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
    #输入备份成功的消息到日记文件
    echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE
    #删除原始备份文件,只需保 留数据库备份文件的压缩包即可
    rm -f $DUMPFILE
else
    echo "Database Backup Fail!" >> $LOGFILE
fi
#输出备份过程结束的提醒消息
echo "Backup Process Done"
#删除7天以上的备份
find /home/ywtg/backup/  -type f -mtime +7 -exec rm {} ; 
复制代码

使用crontab创建定时任务

crontab -e 进入编辑窗口

编辑完成之间wq保存退出,脚本自动生效

任务说明

  • 00 02 * * * 每天凌晨两点执行一次

如果需要多个定时任务,直接crontab -e 添加需要执行得脚本就好了

crontab -l 查看任务列表

\

crontab -r 之间删除任务,没有提示,谨慎操作

crond和crontab

crond和crontab是密不可分的

crond

crond 是 Linux 系统下用来周期性地执行某种任务或等待处理某些事件的一个守护进程。当安装完成操作系统后,默认会安装此服务工具,并且会自动启动 crond 进程,crond 进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

crontab

linux提供给使用者自己定义任务,crontab依赖crond进程,crond进程每分钟回去扫描crontab中的定时任务

查看crond进程的状态,默认是根据系统自启动的

查看结果

备份的数据sql

备份的日志文件

还有备份文件,只需要解压tgz包,然后使用mysql命令去还原就可以了

 /usr/local/mysql/bin/mysql -hlocalhost -uroot -proot123 ywtg_back < /home/ywtg/backup/ywtg-20220509-1533.sql
复制代码

猜你喜欢

转载自juejin.im/post/7095658109862936583