minio版本升级与数据迁移操作记录

8 篇文章 0 订阅
3 篇文章 0 订阅

系列文章目录

minio单节点与集群安装



前言

收到集团侧安全团队邮件提示,MinIo verify接口(未授权问题)存在敏感信息泄露漏洞,攻击者通过构造特殊URL地址,读取系统敏感信息,其中包括环境变量,有的服务器还会获取到AK/SK,获取后可直接登录后台。建议升级到安全版本RELEASE.2023-03-20T20-16-18Z及以上,在waf上配置策略,拒绝所有post到/minio/bootstrap/verify的请求。因为还有环境的minio版本是RELEASE.2020-05-08T02-40-49Z。将其升级到RELEASE.2023-05-18T00-05-36Z版本。


本次升级操作主要以单节点作为示例,集群的升级方法和单节点大同小异

一、问题引出

当前版本太老,升级到安全版本无法通过数据挂载方式直接升级,由于RELEASE.2022-10-29T06-21-33Z之后Mino网关和相关文件系统模式代码已删除,使用standalone或filesystem模式的老版本minio升级到RELEASE.2022-10-29T06-21-33Z或更高版本时,会无法启动。要升级到 RELEASE.2022-10-29T06-21-33Z 或更高版本,使用standalone 或 filesystem模式的用户必须先部署一个新的minio实例,然后手动将配置和数据内容迁移到新实例(注意新实例不能和原来老版本minio在相同的目录,如果是以磁盘为单位部署,则需要使用新的磁盘)。

二、升级与数据迁移步骤

0.资源清单

ipminio版本数据目录位置
192.168.56.130(旧版本单节点)RELEASE.2020-05-08T02-40-49Z/data/minio_data
192.168.56.130(新版本单节点)RELEASE.2023-05-18T00-05-36Z/data/minio_data_2023

1.部署及启动新minio单实例

查看顶部引入的文章链接,通过上述文章中记录的ansible-playbook方式部署高版本的minio单节点实例

[root@python1 ~]# ansible-playbook -i hosts minio.yml
[root@python1 ~]# vim /export/server/minio/single_run.sh
#!/bin/sh
export MINIO_ROOT_USER=OpsMinIO
export MINIO_ROOT_PASSWORD=OpsAdmin081524
TIME=`date +%Y-%m-%d_%T`
MINIO_OPTS="--console-address :9001 --address :8021"  #指定minio-ui的访问端口和minio服务端口.其他参数的使用参考官网文档即可

#启动新实例,指定的数据目录要与老实例不同。
nohup /export/server/minio/minio server $MINIO_OPTS   /data/minio_data_2023  > /export/server/minio/minio_server_"$TIME".log 2>&1 &
echo $! > /export/server/minio/minio.pid

#启动minio单节点
[root@python1 ~]# sh /export/server/minio/single_run.sh

2.设置新旧实例的别名

因演示环境,新旧实例在一个节点上,使用新实例的mc客户端进行别名操作<旧实例mc客户端不支持alias命令>

#查看mc版本
[root@python1 minio]# ./mc --version
mc version RELEASE.2023-05-18T16-59-00Z
#新实例部署路径 /export/server/minio
#设置旧实例的别名
[root@python1 minio]# ./mc alias set minio2021 http://192.168.56.130:9000  MinIO Admin@2020
mc: Successfully migrated /root/.mc/config.json from version `9` to version `10`.
Added `minio2021` successfully.

#设置新实例的别名
[root@python1 minio]# ./mc alias set minio2023 http://192.168.56.130:8021  MinIO Admin@2020
Added `minio2023` successfully.

3.检查旧实例bucket及存储的文件

在这里插入图片描述

4.通过mc客户端命令进行数据迁移

#1、查看创建的别名
[root@python1 minio]# ./mc alias ls

在这里插入图片描述

#执行迁移命令
[root@python1 minio]# ./mc mirror minio2021 minio2023

在这里插入图片描述

知识补充: minio有三种数据迁移方式

第一种:
	全量迁移,重名文件不覆盖,如bucket不存在,会自动创建
	./mc mirror minio2021 minio2023
第二种:
	只迁移某个bucket,以test为例,迁移的目标bucket需要提前创建
	./mc mirror  minio2021/test   minio2023/test   
第三种:
	加上--overwrite参数,覆盖重名文件
	./mc mirror --overwrite  minio2021 minio2023

5.迁移结果验证

访问新实例的minio,可以看到旧实例中的数据已在新minio中存在
在这里插入图片描述

三、新旧实例minio数据对比

在这里插入图片描述
进入minio2021和minio2023的数据目录,可以看到数据文件有很大的区别。

在minio2021的数据目录下,看到的是真正的一个文件,与本地存储的格式一致,并且这些文件可以直接从服务器下载到本地。

这就意味着如果minio的数据目录挂载到服务器本地,则可以直接通过写磁盘的方式将文件写入minio,在minio界面也能正常下载。

但当数据迁移到minio2023后,不管是从minio2021迁移过来的数据,还是新上传的数据,每一个文件,在2023版本的存储目录下都是一个目录,目录下存的是一个.meta元数据文件。

这就意味着在默认情况下,像2021老版本那样直接通过写磁盘的方式将文件写入minio,就已经行不通了。


  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将本地数据迁移MinIO并使用MinIO客户端进行操作,您可以按照以下步骤进行操作: 1. 安装MinIO客户端:首先,您需要在本地计算机上安装MinIO客户端。您可以从MinIO的官方网站下载适用于您操作系统的MinIO客户端,并按照安装说明进行安装。 2. 配置MinIO客户端:在安装完成后,您需要配置MinIO客户端以连接到MinIO服务器。使用以下命令配置MinIO客户端: ``` mc config host add <别名> <MinIO服务器地址> <访问密钥> <秘密密钥> ``` 其中,`<别名>`是您为MinIO服务器设置的别名,`<MinIO服务器地址>`是MinIO服务器的URL,`<访问密钥>`和`<秘密密钥>`是用于访问MinIO服务器的凭据。 3. 创建存储桶:在迁移数据之前,您需要在MinIO服务器上创建一个存储桶来存储数据。使用以下命令创建存储桶: ``` mc mb <别名>/<存储桶名称> ``` 其中,`<别名>`是您在配置MinIO客户端时设置的别名,`<存储桶名称>`是您要创建的存储桶的名称。 4. 迁移数据:一旦配置和准备工作完成,您可以使用MinIO客户端将本地数据迁移MinIO服务器。使用以下命令将本地文件夹中的数据迁移MinIO服务器的存储桶中: ``` mc cp <本地文件夹路径> <别名>/<存储桶名称> ``` 其中,`<本地文件夹路径>`是您要迁移的本地文件夹的路径,`<别名>`是您在配置MinIO客户端时设置的别名,`<存储桶名称>`是您要将数据迁移到的MinIO存储桶的名称。 以上是将本地数据迁移MinIO并使用MinIO客户端进行操作的基本步骤。如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值