Ubuntu中mysql备份并仅保留最新的几份备份文件

2 篇文章 0 订阅
2 篇文章 0 订阅

 达到的效果:备份mysql到指定路径中,定时删除超过一定时间的备份,并仅保留最新的几份备份数据

1.编辑文件

sudo gedit /home/你的文件名/mysql.backup.sh
#!/bin/bash

### 将备份文件以*.sql格式保存至/backup/mysql中,根据时间保留最新固定的备份文件数 ###
### MySQL Server Login Info ###
MUSER="root"
MPASS="123456"
MHOST="localhost"

#指明命令的路径
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
BAK="/backup/mysql"
LS="$(which ls)"
GAWK="$(which gawk)"
XARGS="$(which xargs)"
RM="$(which rm)"

#获得mysql数据库中所有的数据库名称
DBS="$($MYSQL -u$MUSER -h$MHOST -p$MPASS -Bse 'show databases')"
#不需备份的数据库
IGNOREDBS="information_schema mysql"

#每个数据库保留的备份数
PERBAKS=40
#需要备份的数据库数量,值将在for脚本中获得
tables=0

NOW=$(date +"%Y%m%d-%T")

#若路径不存在,则创建之
[ ! -d $BAK ] && mkdir -p $BAK

for db in $DBS
do
    
    skipdb=-1
    
    if [ "$IGNOREDBS" != "" ];
    then
    for i in $IGNOREDBS
    do
        [ "$db" == "$i" ] && skipdb=1 || :
    done
    fi
 
    if [ "$skipdb" == "-1" ] ; then
    FILE=$BAK/$db.$NOW.sql
    echo -e $NOW "开始备份……数据库"++===$db===++>>$BAK/backup.log
    #备份数据库
    $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db  > $FILE
    #需要备份的数据库数
    tables=$[ $tables + 1 ] 
    fi
done

echo -e $tables"个数据库已备份完成" >>$BAK/backup.log

#需要保留的文件数=数据库数*每份数据库需要保留的份数
COUNT=$[ $tables * $PERBAKS ]

 
echo -e $NOW "共备份"$tables"个数据库,保留"$PERBAKS"份备份,以下文件将删除" >>$BAK/backup.log

$LS -t $BAK/*.sql|$GAWK '{sum+=1;if(NR>'$COUNT'){print sum$1}}' >>$BAK/backup.log
$LS -t $BAK/*.sql|$GAWK '{if(NR>'$COUNT'){print $1}}'|$XARGS $RM -f

$LS -t $BAK/*.sql|$GAWK '{sum+=1} END {print sum}'>>$BAK/backup.log
 
echo "=======================================================">>$BAK/backup.log

ftp -v -n 192.168.0.1 <<END
user 用户名 密码
binary
cd /home/ftp/dbback
lcd $BAK
prompt
mput $FILE
close
bye
 2.赋执行权限
sudo chmod +x /home/你的文件名/mysql.backup.sh

 

3.编辑定时执行

sudo gedit /etc/crontab

 

  或sudo crontab -e

在#前一行增加如下脚本,即每天23:59分执行备份

59 23   * * *   root    /home/monica/mysql.backup.sh

 

   如需每几个小时执行一次,则需指定在哪一分钟执行此脚本,否则每几个小时后,将在一个小时内每分钟执行一次。如下每6个小时的第一分钟时执行一次。[0,6,12,18]点各执行一次。

 

1 */6   * * *   root    /home/monica/mysql.backup.sh  

 

4.备份文件于路径/backup/mysql可以查找到。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值