CentOS5.7 下mysql5.7自动备份数据脚本

mysql5.7自动备份数据库脚本

1.root用户下 用cd命令进入到想要的位置创建一个脚文文件:

// 创建脚本命令
vim backup.sh

vim 脚本名.sh


#!/bin/bash


source /etc/profile        #加载系统环境变量
source ~/.bash_profile    #加载用户环境变量
set -o nounset             #引用未初始化变量时退出
#set -o errexit            #执行shell命令遇到错误时退出

user="root"   #数据库用户名
password="123456"  #数据库密码
host="localhost"   #指向本地主机
port="3306"   #端口号
#需备份的数据库,数组
db=("sys")   #有多个数据库就在("mysql" "sys")中添加
mysql_path="/usr/local/mysql5.7"   #mysql的路径
backup_path="${mysql_path}/backup"  #备份路径
history="${backup_path}/history"   #用于存放历史数据库路径
date=$(date +%Y-%m-%d_%H-%M-%S)  #时间
#day=7         #备份7天数据需要就去掉day前面的#
backup_log="${mysql_path}/backup.log"  #创建一个log文件存放结果
echo "-----------------"$(date +%F%r)"操作开始--------------------------------"
#建立备份目录
if [ ! -e $backup_path ];then
    mkdir -p $backup_path
fi
if [ ! -e $history ];then
    mkdir -p $history
fi
#删除以前备份
#find $backup_path -type f -mtime +$day -exec rm -rf {} \; > /dev/null 2>&1

mv /usr/local/mysql5.7/backup/*  /usr/local/mysql5.7/backup/history   #将之前备份的数据库
放入history文件下
echo "开始备份数据库:${db[*]}"

#备份并压缩
backup_sql(){
    dbname=$1
    backup_name="${dbname}_${date}.sql"
    #-R备份存储过程,函数,触发器
  mysqldump -h $host -P $port -u $user -p$password $lock --default-character-set=utf8 --flush-logs -R $dbname > $backup_path/$backup_name   

    if [[ $? == 0 ]];then
        cd $backup_path
        tar -zcpvf $backup_name.tar.gz $backup_name
        size=$(du $backup_name.tar.gz -sh | awk '{print $1}')
        rm -rf $backup_name
        echo "$date 备份 $dbname($size) 成功 "
    else
        cd $backup_path
        rm -rf $backup_name
        echo "$date 备份 $dbname 失败 "
    fi
}

#循环备份
length=${#db[@]}
for (( i = 0; i < $length; i++ )); do
        backup_sql ${db[$i]} >> $backup_log 2>&1
done

echo "备份结束,结果查看 $backup_log"
du $backup_path/*$date* -sh | awk '{print "文件:" $2 ",大小:" $1}'
echo "-----------------"$(date +%F%r)"操作结束--------------------------------"

2.脚本文件添加执行权限

chmod +x backup.sh
3.测试执行脚本文件
./backup.sh
4.测试没有问题添加计划任务
crontab -e 创建任务
01 00 */1 * * /usr/local/mysql5.7/backup.sh #每天00:01分备份数据库
/usr/local/mysql5.7/backup.sh 为脚本所在地址
5 .查看任务
crontab -l 查看所有的计划任务

posted @ 2023-05-12 15:50  西北后生  阅读(81)  评论(0编辑  收藏  举报