定时备份MySQL数据库并传输到OSS里

# cat /srv/shell/mysqlbackup.sh

#!/bin/bash

# 备份文件要保存的目录
DBUSER='root'
DBPASS='2nX#d557NUbjQt'

BACKPATH="/data2/backup/"

MYSQL=/usr/local/mysql/bin/mysql
MYSQLDUMP=/usr/local/mysql/bin/mysqldump

server_ip=$(/usr/sbin/ifconfig  eth0  |sed -n '2p' |awk '{print $2}' )

if [ ! -d "$BACKPATH" ]; then
  mkdir -p "$BACKPATH"
fi
# 要备份的数据库名'多个数据库用空格分开

databases=`$MYSQL -u$DBUSER -p$DBPASS -e "show databases\G"|grep Database|grep -v schema|grep -v test|awk '{print $2}'`
# 循环databases数组
for db in ${databases[*]}
  do
    echo -e " ####Begin $db Dump! Start_Time:`date +%F' '%T''%w`" >>${BACKPATH}backup.log
    # 备份数据库生成SQL文件
     #$MYSQLDUMP -u$DBUSER  -p$DBPASS   --default-character-set=utf8 -R  --triggers  --events --opt   --set-gtid-purged=off  --single-transaction --master-data=2 $db 2>/dev/null | gzip  >$BACKPATH$db-$(date +%Y%m%d).sql.gz
     $MYSQLDUMP -u$DBUSER  -p$DBPASS   --default-character-set=utf8 -R  --triggers  --events --opt   --set-gtid-purged=off  --single-transaction $db 2>/dev/null | gzip  >$BACKPATH$db-$(date +%Y%m%d).sql.gz
    echo -e " #### End  $db Dump! End_Time:`date +%F' '%T`" >>${BACKPATH}backup.log
done

#备份上传至OSS
echo -e "####Begin upload to OSS Start_Time:`date +%F' '%T''%w`" >>${BACKPATH}backup.log
/usr/local/bin/ossutil64 -c /data2/.ossutilconfig -u -r cp /data2/backup/ oss://huanma-backups/mysql/${server_ip}/
echo -e "#### End upload to OSS End_Time:`date +%F' '%T''%w`" >>${BACKPATH}backup.log

# 删除5天之前的备份数据
find $BACKPATH -mtime +4 -name "*.sql.gz" -exec rm -rf {} \;
posted @   哈喽哈喽111111  阅读(84)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-11-24 Shell脚本中判断字符串是否被包含在内并且使用grep 精确匹配
2021-11-24 获取Docker容器名称和ID
2021-11-24 K8s deployments的故障排查可视化指南已更新(2021 中文版)
2021-11-24 shell分割字符串并赋值给变量
点击右上角即可分享
微信分享提示