背景

系统上线首要的问题就是数据库的定时备份,为了保证单向推送, 小于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
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐