目录
因公司出于安全考虑,需要对私有化本地部署的项目做数据库备份,本地项目都是单体应用项目,没有容灾处理,所以考虑本地备份完以后,将备份的文件上传到第三方的云存储服务器或其他可以公网访问的云服务项目,本文介绍的是上传到其他上云的含有minio的项目
1、本地备份,并安装minio客户端
1.1 安装minio客户端mc
[root@ceshiji /]# wget https://dl.min.io/client/mc/release/linux-amd64/mc
[root@ceshiji /]# chmod +x mc
[root@ceshiji /]# sudo mv mc /usr/local/bin/
1.2 配置Minio别名(只需执行一次)
mc alias set 别名 第三方minio公网地址 -- api S4v4
2.编写本地备份脚本并上传至第三方minio上
#!/bin/bash
# 备份配置
USER="你的数据库用户名"
PASSWORD="你的数据库密吗"
HOST="你的数据库IP地址"
LOCAL_BACKUP="你的本地临时备份目录"# Minio配置(根据实际修改)
MINIO_ALIAS="别名"
MINIO_ENDPOINT="第三方minio公网地址"
MINIO_BUCKET="第三方minio bucket名称"# 创建临时目录
mkdir -p $LOCAL_BACKUP
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $LOCAL_BACKUP/$DATE# 需要备份的数据库列表
DATABASES="需要备份的数据库库名,空格隔开"# 循环备份每个数据库
for DB in $DATABASES; do
# 备份单个数据库
/usr/local/mysql/bin/mysqldump -u$USER -p$PASSWORD -h $HOST --hex-blob $DB > $LOCAL_BACKUP/${DB}_$DATE.sql
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "Backup of $DB successful."
else
echo "Backup of $DB failed."
fi
# 压缩备份文件
tar -czf $LOCAL_BACKUP/$DATE/${DB}.sql.tar.gz $LOCAL_BACKUP/${DB}_$DATE.sql
# 删除未压缩的备份文件
rm $LOCAL_BACKUP/${DB}_$DATE.sql
done# 上传压缩的文件到Minio
mc cp $LOCAL_BACKUP/$DATE/数据库库名.sql.tar.gz $MINIO_ALIAS/$MINIO_BUCKET/$DATE/# 删除7天前的备份文件夹
find $LOCAL_BACKUP -type d -name "*" -mtime +7 -exec rm -rf {} \;
3.第三方minio配置
3.1创建新的bucket
3.2将该bucket设置成public并设置清除策略
4.注意
上述配置基本就可实现本地备份文件的传输,但是需要注意mc客户端配置minio公网地址,大部分都是域名+对外暴露的端口号,在去nginx里做代理映射的,如果bucket不设置为public的话在做签名认证的时候会有问题。因此在传输时不进行签名认证,处于安全考虑可以在nginx里对映射的localtion做ip访问的限制处理,配置参考如下
server {
listen 80;
server_name example.com;location / {
# 允许指定的IP地址访问(配置你本地出去的公网ip)
allow 192.168.1.1;
# 拒绝所有其他IP地址访问
deny all;..... 其他配置
}
}