备份MySQL到OSS

场景

开发/测试数据为自己安装,未使用RDS,且开发/测试环境安装操作频繁,为防止数据库出现问题,影响开发/测试进度,现需要将开发/测试数据库定时备份到oss上。

下载oss工具ossutil

# 下载ossutil
wget https://gosspublic.alicdn.com/ossutil/1.7.7/ossutil64
# 授权
chmod 755 /usr/local/src/ossutil64/ossutil64
# 软链接到bin目录下直接执行
ln -s /usr/local/src/ossutil64/ossutil64 /usr/local/bin/ossutil64

创建备份数据库及上传至oss脚本

创建脚本文件:
touch mysql_backup_test.sh

vim 写入脚本内容:

#!/bin/sh
# mysql程序根目录
base_mysql_path=/usr/share/mysql-8.0
# 数据包临时目录
mysql_dump_path=/usr/local/src/ossutil64/backup
# 数据库配置
data_env="prod"   #数据库所在环境
mysql_user="root"  #真实数据库用户名
mysql_pass="" #真实数据库密码
# oss 配置 如果服务器跟oss是内网,记得使用内网地址
oss_endpoint="" #真实oss endpoint
oss_bucket="sc/data/mysql/${data_env}" #真实osss桶名
oss_accesskeyid="" #真实oss keyId
oss_accesskeysecret="" #真实oss keysecret
# 需要备份的数据库名
database="job_prod"
# 需要忽略的表
excluded_tables=(
xxl_job_log_report
)
random=`cat /proc/sys/kernel/random/uuid  | md5sum |cut -c 1-9`
backup_name=${database}"_"`date +%Y%m%d`"_"${random}
echo "备份到 "${backup_name}
# 删除100天前的备份文件
del_name=${database}"_"`date -d"100 day ago" +%Y%m%d`

ignore_tables_string=""
for table in "${excluded_tables[@]}"
do :
   ignore_tables_string+=" --ignore-table=${database}.${table}"
done
echo "开始备份 "`date +%Y-%m-%d\ %H:%M:%S`
cd ${mysql_dump_path}
# mysqldump database -uroot -proot --tables table1 table2 > backup.sql
mysqldump -u${mysql_user} -p${mysql_pass} ${database} ${ignore_tables_string} > ${backup_name}.sql
# 压缩包
tar zcf ${backup_name}.tar.gz ${backup_name}.sql
rm -f ${backup_name}.sql
# 上传到 oss
echo "上传到oss中 "`date +%Y-%m-%d\ %H:%M:%S`
/usr/local/bin/ossutil64 cp ${backup_name}.tar.gz oss://xxx-oss/${oss_bucket}/backup/${backup_name}.tar.gz -f -e ${oss_endpoint} -i ${oss_accesskeyid} -k ${oss_accesskeysecret}
echo "删除 "${del_name}
/usr/local/bin/ossutil64 rm oss://xxx-oss/${oss_bucket}/backup/${del_name} -r -f -e ${oss_endpoint} -i ${oss_accesskeyid} -k ${oss_accesskeysecret}
rm -f ${backup_name}.tar.gz
echo "备份完成 "`date +%Y-%m-%d\ %H:%M:%S`

创建定时任务crontab 定时执行脚本

执行 crontab -e 命令,编辑设置定时执行备份脚本:

#每天凌晨3:20执行mysql_backup_test.sh脚本
20 3 * * * /usr/local/src/ossutil64/mysql_backup_test.sh >> /usr/local/src/ossutil64/mysql_backup_test.log 2>&1

执行
ubuntu 执行 sudo service cron start
centos 执行 service crond restart 重启cron服务即可。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值