• MinIO实现数据迁移(mc)


    运行两个版本的minio 

    version: '2.3'

    services:

      # 新版本

      minio2023:

        image:  minio/minio:RELEASE.2022-06-20T23-13-45Z.fips

        container_name: minio2023

        restart: always

        environment:

          - MINIO_ACCESS_KEY=minioadmin

          - MINIO_SECRET_KEY=minioadmin

          - MINIO_ROOT_USER=minioadmin

          - MINIO_ROOT_PASSWORD=minioadmin

          - TZ=Asia/Shanghai

        volumes:

          - /etc/localtime:/etc/localtime

        command: server /data --console-address ":9090" -address ":9000"

        ports:

          - 9000:9000

          - 9090:9090

      

    version: '2.3'

    services:

      # 旧版本

      minio2021:

        image: minio/minio:RELEASE.2021-06-17T00-10-46Z

        container_name: minio2021

        environment:

          MINIO_ACCESS_KEY: admi

          MINIO_SECRET_KEY: admin123

        command: server /data

        restart: always

        ports:

          - 19000:9000

          - 19001:9001

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

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

    docker run -it  --entrypoint=/bin/sh minio/mc:RELEASE.2023-06-06T13-48-56Z

    分别设置 minio2021 和 minio2023 的alias

    # mc alias set 名称 服务地址 用户名 密码

    # 设置minio2021的alias

    mc alias set minio2021 http://ip:19000 admin admin123

    # 设置minio2023的alias

    mc alias set minio2023 http://ip:9000 minioadmin minioadmin

    迁移数据

    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/test

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

    mc mirror  minio2021 minio2023 

     

    通过minio 界面查看数据是否迁移成功  

    需要迁移的桶全部迁移成功

    MinIO Client (mc) 命令

    ls 列出文件和文件夹。

    mb 创建一个存储桶或一个文件夹。

    cat 显示文件和对象内容。

    pipe 将一个STDIN重定向到一个对象或者文件或者STDOUT。

    share 生成用于共享的URL。

    cp 拷贝文件和对象。

    mirror 给存储桶和文件夹做镜像。

    find 基于参数查找文件。

    diff 对两个文件夹或者存储桶比较差异。

    rm 删除文件和对象。

    events 管理对象通知。

    watch 监听文件和对象的事件。

    policy 管理访问策略。

    session 为cp命令管理保存的会话。

    config 管理mc配置文件。

    update 检查软件更新。

    version 输出版本信息。

         例子

    # 执行命令测试能否连通,如有文件或至少存在一个 Bucket,会在回显中列出:

    mc ls minio1

    # 执行命令获取集群数据大小,如果有文件或存在至少一个 Bucket,会在最后一行打印当前集群所有文件总大小:

    mc du minio1

    #查看cat ~/.mc/config.json里的配置

    mc config host ls

    #查看所有alias

    mc alias ls

    #使用命令检查是否有未完整传输的文件,如果有未传输完全的文件,会在回显中列出:

    mc ls --incomplete minio1

    #如果有必要,可以删除某个桶中的残缺文件:

    mc rm --incomplete $hostName/$bucket

      mc cp 命令需要在目标集群拥有同名 Bucket,mc mirror 不需要,同时 mc mirror 会自动保存目录的层级信息,mc cp 需要额外指定 --recursive 参数,请根据需要酌情选择。

    迁移的时候遇到的报错

    mc:  Unable to list comparison retrying.. S3 API Request made to Console port. S3 Requests should be sent to API port.

     通过单独查看 发现  是minio2023 的地址不对 

    我是直接从浏览器复制的地址  为  ip:9090   实则是9000   重新配置别名修改一下 地址就可以了

  • 相关阅读:
    解决OpenCV捕捉USB摄像头时抓帧失败的问题
    java-php-python-ssm计算机类专业考研交流学习平台计算机毕业设计
    VMware使用vim遇到的一系列问题
    Vue基础语法的进阶,事件处理器,自定义组件及组件通信
    费马小定理的两个证明
    Page Cache难以回收产生之直接内存回收引起 load 飙高或者业务时延抖动
    Spring Boot中@Import三种使用方式!
    关于RabbitMQ的小总结
    关于TornadoFx和Android的全局配置工具类封装实现及思路解析
    软件测试面试被问:你为何换工作、换专业学测试?
  • 原文地址:https://blog.csdn.net/fyc__iOS/article/details/134459886