Mysql 备份

#!/bin/bash
nenv='pro数据库'
user='BakUser'
pwd="xxx"
dbname='vwork'
dbmagic='magicod'
dbfastdev='fast'
bakdir='/data/dbbak'
bakdate=`date +'%Y%m%d%H%M'`

#异机备份主机信息
bakhost="xxxx"
bakuser="xxx"
bakport=22
destdir="/data/dbbak"

test_func(){
        if [ $? -ne 0 ];then
                echo "`date +'%F %T'`: $1 失败" >> ${bakdir}/dbbak.log
                exit 1
        else
                echo "`date +'%F %T'`: $1 成功" >> ${bakdir}/dbbak.log
        fi
}

mkdir -p ${bakdir}
echo "`date +'%Y%m%d%H%M%S'`:开始备份数据库${dbname}" >> ${bakdir}/mysql_bak.err

##获取排除的表
tables=`mysql -u ${user} -p${pwd} -e "select ignore_table_name from ${dbname}.backup_ignore_table where in_use=1 AND database_name in ('standard',database());"`
if [[ $? -ne 0 ]];then
        echo "`date +'%Y%m%d%H%M%S'`:获取ignore_table_name中的大表数据失败." >> ${bakdir}/mysql_bak.err
fi
ignore_table=''

if [[ ! -z ${tables} ]];then
for i in $tables;do
        if [[ ${i} == 'ignore_table_name' ]];then
                sleep 0.1
        else
                ignore_table="${ignore_table} --ignore-table=${dbname}.${i}"
        fi
done
fi

# 备份ehr库
echo "正在备份数据库${dbname}"
rm -f ${bakdir}/res.log
mysqldump -u $user -p$pwd -f -R -E --triggers --single-transaction --master-data=2 --log-error=${bakdir}/res.log ${dbname} ${ignore_table} | gzip > ${bakdir}/${dbname}_${bakdate}.sql.gzip
grep -i error ${bakdir}/res.log > /dev/null
if [[ $? -eq 0 ]];then
        echo "${nenv}备份失败"
else
        echo "${nenv}备份成功"
fi

##备份magicapi库
echo "正在备份数据库${dbmagic}"
rm -f ${bakdir}/magicapi_res.log
mysqldump -u $user -p$pwd -f -R -E --triggers --single-transaction --master-data=2 --log-error=${bakdir}/magicapi_res.log ${dbmagic} | gzip > ${bakdir}/${dbmagic}_${bakdate}.sql.gzip
grep -i error ${bakdir}/magicapi_res.log > /dev/null
if [[ $? -eq 0 ]];then
        echo "${dbmagic}备份失败"
else
        echo "${dbmagic}备份成功"
fi

##备份fastdev库
echo "正在备份数据库${dbmagic}"
rm -f ${bakdir}/fastdev_res.log
mysqldump -u $user -p$pwd -f -R -E --triggers --single-transaction --master-data=2 --log-error=${bakdir}/fastdev_res.log ${dbfastdev} | gzip > ${bakdir}/${dbfastdev}_${bakdate}.sql.gzip
grep -i error ${bakdir}/fastdev_res.log > /dev/null
if [[ $? -eq 0 ]];then
        echo "${dbfastdev}备份失败"
else
        echo "${dbfastdev}备份成功"
fi

##刷新binlog
mysql -u ${user} -p${pwd} -e "flush logs;"

#异机备份
rsync -avz -e "ssh -p $bakport" ${bakdir}/*.sql.gzip $bakuser@$bakhost:$destdir
ssh -p $bakport $bakuser@$bakhost "find $destdir -name '*.sql.gzip' -mtime +30 -exec rm -f {} \; "


find ${bakdir}/ -mtime +4 -exec rm -f {} \;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

东方-phantom

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

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

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

打赏作者

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

抵扣说明:

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

余额充值