mysql分库备份脚本_mysql 分库备份脚本

这是一个用于按数据库分库备份的bash脚本,作者通过设置排除特定数据库,定义备份路径和保留天数来实现定期备份。脚本使用mysqldump进行数据库转储,并通过gzip压缩备份文件,同时清理超过设定天数的旧备份。
摘要由CSDN通过智能技术生成

#!/bin/bash

#Author:heyic.m@gmail.com

#按数据库分库备份,可排除指定库

#2016-06-08 create.

#2017-02-21 add expire_days.

#2017-02-27 redifine backupPath's name style.

#备份用户与密码

mysql_user="root"

mysql_pwd="pass"

mysql_host="localhost"

cmd_mysql="/data/apps/mysql/bin/mysql"

cmd_mysqldump="/data/apps/mysql/bin/mysqldump"

#备份目录

#backuppath="/data/backup/mysql/`date +%F`/"

backup_basedir="/data/backup/mysql"

day=`date +%F`

#备份保存时间

backuppath="${backup_basedir}/${day}"

expire_days=30

if [ ! -d $backuppath ];then

mkdir $backuppath -p

fi

bk_time=`date +%y%m%d%H%M%S`

#排除不备份的数据库,多个库用'|'隔开

exclude_db="mysql|test|information_schema|performance_schema"

#备份功能

if [ -z $mysql_pwd ];then

if [ -z $exclude_db ];then

backup_db=`$cmd_mysql -u$mysql_user  -h$mysql_host -e "show databases;"|grep -vi database`

else

backup_db=`$cmd_mysql -u$mysql_user  -h$mysql_host -e "show databases;"|grep -vi database |grep -Ev $exclude_db`

fi

else

if [ -z $exclude_db ];then

backup_db=`$cmd_mysql -u$mysql_user -p$mysql_pwd -h$mysql_host -e "show databases;"|grep -vi database`

else

backup_db=`$cmd_mysql -u$mysql_user -p$mysql_pwd -h$mysql_host -e "show databases;"|grep -vi database |grep -Ev $exclude_db`

fi

fi

for db in $backup_db;do

if [ -z $mysql_pwd ];then

echo "`date` Is backuping $db,please wait..."

$cmd_mysqldump -u$mysql_user -h$mysql_host \

--single-transaction \

--hex-blob \

--events \

--routines \

--triggers \

--master-data=2 \

--set-gtid-purged=off \

--databases \

$db | gzip -9 > $backuppath/$db.$bk_time.sql.gz

else

echo "`date` Is backuping $db,please wait..."

$cmd_mysqldump -u$mysql_user -p$mysql_pwd -h$mysql_host \

--single-transaction \

--hex-blob \

--events \

--routines \

--triggers \

--master-data=2 \

--set-gtid-purged=off \

--databases \

$db | gzip -9 > $backuppath/$db.$bk_time.sql.gz

fi

done

echo "`date` The backup is completed."

#清除过期备份

#获取备份目录路径

#截取长度(res_len)=总长度(total_len)-12(/2017-02-21/)

#${backuppath:0:$res_len}

#total_len=${#backuppath}

#res_len=$[ $total_len - 12 ]

#clean_path=${backuppath:0:$res_len}

clean_path=${backup_basedir}

#echo $clean_path

#清除

echo "start to remove backupfiles of more than $expire_days days."

find $clean_path -mtime +$expire_days | xargs rm -rfv

echo "done."

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值