mysql分库分表备份脚本

#!/bin/bash 

#创建备份用户
#grant select,lock tables,reload,super,file,show view on *.* to 'mysqlbackup'@'localhost' identified by 'my_password'; 
#grant execute on *.* to 'mysqlbackup'@'localhost' identified by 'my_password';  授予调用存储过程的权限
##flush privileges;

USERNAME=mysqlbackup #备份的用户名 
PASSWORD=my_password  #备份的密码
HOST=localhost #备份主机

DATE=`date +%Y-%m-%d`  #用来做备份文件名字的一部分
OLDDATE=`date +%Y-%m-%d -d '-10 days'`  #本地保存天数  

#指定命令所用的全路径
MYSQL=/app/mysql5.5/bin/mysql
MYSQLDUMP=/app/mysql5.5/bin/mysqldump
MYSQLADMIN=/app/mysql5.5/bin/mysqladmin

#创建备份的目录和文件
BACKDIR=/data/backup/db
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
[ -d ${BACKDIR}/${DATE} ] || mkdir ${BACKDIR}/${DATE}
[ ! -d ${BACKDIR}/${OLDDATE} ] || rm -rf ${BACKDIR}/${OLDDATE} #保存10天 多余的删除最前边的
#开始备份  for循环想要备份的数据库
MYSQLDUMP_LIST=$(${MYSQL} -uroot -p'123456'  -e "show databases"| grep -Evi "database|infor|perfor|mysql")

for DBNAME in ${MYSQLDUMP_LIST} ##使用for依次罗列需要备份的数据库名字
do
  TABLE="$(${MYSQL} -uroot -p'123456'  -e "use $DBNAME;show tables;"|sed '1d')" #依次列出需要备份的表的名字
  for tname in $TABLE
    do
        MYDIR=${BACKDIR}/${DATE}/${DBNAME} 
        #echo $MYDIR
        [ ! -d $MYDIR ] && mkdir -p $MYDIR #创建备份表的目录
        $MYSQLDUMP   -uroot -p'123456'  $DBNAME $tname |gzip >$MYDIR/${DBNAME}_${tname}_${DATE}.sql.gz
    done
 logger "${DBNAME}_${tname} has been backup successful - $DATE"
done

原出处https://www.cnblogs.com/lazyball/p/8662586.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值