定时备份数据库导出到 Minio
将数据库备份自动上传到专用的Minio服务
·
背景
系统上线首要的问题就是数据库的定时备份,为了保证单向推送, 小于30M的,还能以邮件方式。
但大于30M的就不太好处理了,在某些特殊环境下,开通ftp或者sftp权限非常困难,于是尝试将数据库备份自动上传到专用的Minio服务。
Minio
进入9001端口的管理页添加桶
添加桶
项目 | 说明 |
---|---|
桶名 | dbbk |
用户、组、权限
添加组和权限
dbbk
项目 | 说明 |
---|---|
组名 | dbbk |
权限 | writeonly |
添加用户和权限
dbbk
项目 | 说明 |
---|---|
账号 | dbbk |
密码 | dbbk@123456 |
权限 | writeonly |
组名 | dbbk |
添加AccessKey
- 即dbbk用户的AccessKey
项目 | 说明 |
---|---|
AccessKey | Abc*****123 |
SecretKey | GG5*****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用户的AccessKey Abc*****123 dbbk用户的SecretKey GG5*****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
更多推荐
已为社区贡献1条内容
所有评论(0)