mysql 数据库备份脚本+计划任务(修正版)

一、数据库备份脚本

功能:备份同一数据库一个或多个库,最新备份文件保留数量可以设定

  • 备份数据库

修改这行:Datebases=(sharebed) ,如果是多个库,例如:Datebases=(sharebed step awk)  以空格做间隔

  • 保留备份数量

修改这行:bak_num=10   (这里写了10份,如果是多个库备份,每个库都是自动保留10份)

#!/bin/bash
# 配置项
# 备份存放目录
DataURL=/data/sqlBAK
[ ! -d $DataURL ] && mkdir -p $DataURL
# 文件名
Dhost="39.10.74.15"
# 数据库连接端口
Dport=3389
# 数据库用户名
Duser='root'
# 数据库密码
Dpwd='hjhk6hg4555'
# 要单独备份的数据库名,可以设置多个库备份,空格做分隔
Datebases=(sharebed)
# 备份日志文件
BAK_log=/data/sqlBAK/.BAK150.
for i in ${Datebases[@]}
do
    [ ! -f $BAK_log ] && : > "$BAK_log$i"
done

#---主功能块
# 备份功能
DataName="$(date +%Y%m%d%H%M)"
cd $DataURL
for d in ${Datebases[@]}
do
        /usr/bin/mysqldump -R -E --host=$Dhost -P$Dport -u$Duser -p$Dpwd $d > temp.sql
        temp_name=$DataURL/$d.$DataName.tar.gz
        /usr/bin/tar -zcpf $temp_name temp.sql
        rm -rf temp.sql
        echo "$DataName::$temp_name" >> $BAK_log
done

# 删除多余备份(当单个库或多个库备份时,每个备份库数量都分别只保留十个最新备份)
cd $DataURL
for i in ${Datebases[@]}
do
    temp=`cat $BAK_log$i | wc -l`
    row=$((temp+0))
    del_row=$((row-10))
    if [ $row -ge 11 ]; then
        head -$del_row $BAK_log$i | awk -F "::" '{ print $2}' | xargs -n1 rm -rf {};
        sleep 1
        sed  1,"$del_row"d $BAK_log$i  -i
    fi
done

二、计划任务

[root@ald8 / ]# crontab -l
#-S1-----数据库备份任务(只备份sharebed库、每天早上3点1分备份一次,脚本自动保留最新十个备份 |>备份脚本:/data/shell/SqlAllBak.sh  |>备份存放目录:/data/sqlBAK>)
1 3 * * * /data/shell/SqlAllBak.sh

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

璐程风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值