定时脚本备份服务器Mysql数据库表

我们平时的数据库为了避免误操作或者在迭代更新的时候都会对数据库进行备份,那么这边使用linux服务器自带的crontab定时脚本+linux shell脚本对我们博客的数据库进行备份。

分享两个网站一个是crontab教程、一个是根据表达式推算执行时间。

crontab 命令教程:https://www.runoob.com/linux/linux-comm-crontab.html

crontab 执行时间计算工具:https://tool.lu/crontab/


编写脚本

1.在服务器随便找个位置创建个文件夹,我创建文件夹/opt/scripts,在里面创建两个shell脚本(log_function.sh、mysql_backup.sh),创建/opt/backup,这个文件夹用来保存备份的sql文件。

在这里插入图片描述

2.mysql_backup.sh这个是数据库的备份脚本

  • 先判断脚本是否存在
  • 执行备份操作
  • 删除过期的sql文件
  • 确认文件大小即备份成功与否
#! /bin/bash
# Copyright by endwas
# date 2021-02-06

backup_path="/opt/backup"
user="root"
passwd="123456"

# 数据库名字
dbname="myblog"
host="localhost"
today=`date +'%Y%m%d-%H%M%S'`
sqlname=$dbname$today.sql

# 确认log脚本是否存在
if [ -e /opt/scripts/log_function.sh ]
then
source /opt/scripts/log_function.sh
else
echo -e "\033[41;37m /opt/scripts/log_function.sh is not exist. \033[0m"
exit 1
fi

# 数据库备份指令
backup(){
    log_correct "开始执行备份脚本。删除14天过期备份"
    mysqldump -h$host -u$user -p$passwd $dbname > $backup_path/$sqlname

}

# 删除过期sql文件
delete(){
    find /opt/backup -mtime +14 -type f -name '*.sql' -exec rm -f {} \;
}


size(){
    cd /opt/backup
	# 查询sql备份文件大小
    dd=`du -sh $sqlname`
    if [ -s ./$sqlname ] ;

    then
        log_correct "myblog备份正常"
        log_correct $dd
    else
        log_error "myblog备份失败"
    fi

}
backup
delete
size

  • \033...这些是输出日志颜色代码,可以忽略

3.log_function.sh这个是日志脚本,被mysql_backup.sh导入用于执行输出日志在/opt/scripts

#! /bin/bash
function log_correct(){
    DATE=`date +'%Y%m%d-%H%M%S'`
    USER=$(whoami)
    echo "${DATE} ${USER} execute $0 [INFO] $@" >>/opt/scripts/log_info.log



}


function log_error(){
    DATE=`date +'%Y%m%d-%H%M%S'`
    USER=$(whoami)
    echo "${DATE} ${USER} execute $0 [INFO] $@" >>/opt/scripts/log_error.log



}



function fn_log (){
if [ $? -eq 0 ]
then
log_correct " $@ successed! "
echo -e "\033[32m $@ sucessed. \033[0m"
else
log_error "$@ failed"
echo -e "\033[41;37m $@ failed! \033[0m"
exit
fi
}

设置定时脚本任务

1.输入crontab -e进入定时脚本编辑器 2.如果没有设置编辑器模式,提示你选择,推荐第三种和vim类似。

在这里插入图片描述

3.设置想要执行脚本的时间 这边是设置了每天凌晨一点进行备份,想要其他备份时间可以自行设置。

在这里插入图片描述

备份文件

在这里插入图片描述 这样就会在每天凌晨一点进行备份了,第一条为测试所以时间不准确。

end
  • 作者:Endwas(联系作者)
  • 发表时间:2021-02-06 01:05
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:如果是转博主转载的文章,请附上原文链接
  • 公众号转载:请在文末添加作者名字和博客地址
  • 评论