定时备份数据库导出到 Minio

文章介绍了如何利用Minio进行数据库备份,包括在Minio管理界面创建桶、设置用户权限,以及配置Minio客户端(mc)进行文件上传。通过编写备份脚本(backup.sh),结合mysqldump进行数据库dump,然后用7z压缩文件,最后使用mc将备份文件上传至Minio服务器。此外,文章还提到了设置Linux计划任务(cron)来每日执行备份脚本。

背景

系统上线首要的问题就是数据库的定时备份,为了保证单向推送, 小于30M的,还能以邮件方式。

但大于30M的就不太好处理了,在某些特殊环境下,开通ftp或者sftp权限非常困难,于是尝试将数据库备份自动上传到专用的Minio服务。

Minio

进入9001端口的管理页添加桶

添加桶

项目说明
桶名dbbk

用户、组、权限

添加组和权限

dbbk
项目说明
组名dbbk
权限writeonly

添加用户和权限

dbbk
项目说明
账号dbbk
密码dbbk@123456
权限writeonly
组名dbbk
添加AccessKey
  • 即dbbk用户的AccessKey
项目说明
AccessKeyAbc*****123
SecretKeyGG5*****Mzz

Minio Client

mc程序下载到数据库服务器目录并设置可运行,例如: /opt/backup/

添加服务器节点

minioback

mc config host add minioback http://192.168.1.100:9000 Abc*****123  GG5*****Mzz --api s3v4

说明

项目说明
mc自定义服务器节点名称minioback
服务器IP和端口192.168.1.100
dbbk用户的AccessKeyAbc*****123
dbbk用户的SecretKeyGG5*****Mzz

备份

脚本

cd /opt/backup/
touch backup.sh
chmod +x backup.sh
vi backup.sh

backup.sh

BACKDIR=/opt/backup
DATABASE=test
BACKDATE=$(date +%Y%m%d)
DB_USER=test
DB_PW=test
BACKFILE=$DATABASE-$BACKDATE
echo $BACKFILE

echo "===备份开始==="
echo "备份文件存放于$BACKDIR/$BACKFILE.sql"
cd $BACKDIR
mysqldump  -u${DB_USER} -p${DB_PW}  ${DATABASE} >${BACKDIR}/$BACKFILE.sql
7z a -mx=9 $BACKFILE.7z $BACKFILE.sql -sdel

echo "===导出成功,开始传输==="
/opt/backup/mc cp $BACKFILE.7z minioback/dbbk/test/

echo "===清理历史文件==="
find $BACKDIR -mtime +10 -name "*.7z" -exec rm -rf {} \;

计划任务

手动执行脚本,验证没问题后,就可以配置计划任务了

crontab -e

crontab -e

每天23点50分自动备份

50 23 * * * /opt/backup/backup.sh > /opt/backup/backup.log 2>&1

重启计划任务服务

systemctl restart crond.service
systemctl status crond.service
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值