使用Minio Clinet将老版本Minio的数据迁移到新版本的Minio

Posted 贾光辉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Minio Clinet将老版本Minio的数据迁移到新版本的Minio相关的知识,希望对你有一定的参考价值。

1. 关于Minio Client

MinIO Client是一个命令行工具,用于与Minio或云存储服务进行交互。它支持文件系统和Amazon S3兼容的云存储服务(AWS Signature v2和v4)。

MinIO Client mc 命令行工具提供了lscatcpmirrordiff等UNIX命令的现代替代方案,支持文件系统和Amazon s3兼容的云存储服务。

mc 命令行工具是为与AWS S3 API兼容而构建的,并在MinIO和AWS S3上测试了预期的功能和行为。

MinIO不为其他S3兼容服务提供保证,因为它们的S3 API实现是未知的,因此不受支持。虽然mc命令可以按照文档的方式工作,但任何此类用法都要由您自己承担风险。

2. 迁移示例

2.1 部署两个版本的Minio实例

  • 旧版本2019:minio/minio:RELEASE.2019-12-19T22:52:26Z
  • 新版本2023:minio/minio:RELEASE.2023-03-24T21-41-23Z
version: \'3\'
services:
  # 旧版本2019
  minio2019:
    image: minio/minio:RELEASE.2019-12-19T22:52:26Z
    ports:
      - 19000:9000
      - 19001:9001
    environment:
      MINIO_ACCESS_KEY: admin
      MINIO_SECRET_KEY: admin123
    volumes:
      - /usr/local/minio2019/data:/data
      - /usr/local/minio2019/config:/root/.minio/
    command: server /data
    privileged: true
    restart: always

  # 新版本2023
  minio2023:
    image: minio/minio:RELEASE.2023-03-24T21-41-23Z
    ports:
      - 29000:9000
      - 29001:9001
    environment:
      MINIO_ACCESS_KEY: admin
      MINIO_SECRET_KEY: admin123
    volumes:
      - /usr/local/minio2023/data:/data
      - /usr/local/minio2023/config:/root/.minio/
    command: server --console-address \':9001\' /data
    privileged: true
    restart: always

2.2 在2019版本Minio上创建一个名称为"test2019"的bucket,并上传一些测试文件,通过查看挂载目录可以看到:

[root@master minio2019]# tree /usr/local/minio2019/
/usr/local/minio2019/
├── config
│   └── certs
│       └── CAs
├── data
│   └── test2019
│       ├── image-01.png
│       ├── image-02.png
│       ├── image-03.png
│       └── image-04.png

2.3 部署一个 mc 容器,做数据迁移

启动一个mc容器,并进入容器中

docker run -it --entrypoint=/bin/sh minio/mc

分别设置 minio2019minio2023 的alias

# mc alias set 别名 minio后端链接端口 管理员账号 管理员密码

# 设置minio2019的alias
mc alias set minio2019 http://ip:19000 admin admin123
# 设置minio2023的alias
mc alias set minio2023 http://ip:29000 admin admin123

2.4 迁移数据

mc迁移数据通常有下面三种场景:

#1. 全量迁移,重名文件不覆盖,如bucket不存在,会自动创建
mc mirror  minio2021 minio2023

#2. 只迁移某个bucket,以test为例,迁移的目标bucket需要提前创建
mc mirror  minio2021/test  minio2023/test  #test要提前在minio2023中创建
 
#3. 加上--overwrite参数,覆盖重名文件
mc mirror  --overwrite  minio2021 minio2023
mc mirror  --overwrite  minio2021/test  minio2023/te

这里使用第一种方式,全量迁移,重名文件不覆盖,如bucket不存在,会自动创建

[root@master minio2019]# mc mirror  minio2019 minio2023

2.5 查看迁移结果

[root@master minio2019]# tree /usr/local/minio2023
/usr/local/minio2023
├── config
│   └── certs
│       └── CAs
├── data
│   └── test2019
│       ├── image-01.png
│       ├── image-02.png
│       ├── image-03.png
│       └── image-04.png

MINIO:对象的GetVersions

【中文标题】MINIO:对象的GetVersions【英文标题】:MINIO: GetVersions of the object 【发布时间】:2021-11-08 12:08:24 【问题描述】:

我是 MinIO 的初学者,我想知道有没有办法获得所有版本的对象?我只有对象的名称,我想知道它有什么版本? 请帮忙

编辑:我使用 minio-dotnet-master

【问题讨论】:

使用命令行或api if api,which sdk? 【参考方案1】:

使用 Minio 客户端:mc client

mc ls --versions s3/mybucket/object

大多数 minio sdk 支持检索版本。

例如list_objects 在mino-py 和include_version = True

【讨论】:

以上是关于使用Minio Clinet将老版本Minio的数据迁移到新版本的Minio的主要内容,如果未能解决你的问题,请参考以下文章

云原生之Docker实战使用Docker部署MinIO对象存储

MinIO的搭建

MINIO:对象的GetVersions

minio简单安装与使用

Docker Swarm 使用NFS 搭建 S3 (minio)多副本

MinIO安装及使用教程(windows) 及java 上传 下载 windows minio 修改密码修改 MINIO_ACCESS_KEY minio开机启动