MinIO - 数据迁移方案

一. 前期准备

  1. 检查MinIO的Data目录中文件存放格式
    • 旧版 xl-single / 纠删码模式:每个文件都是目录,目录内有xl.meta、part.1等不可读文件
    • 新版 SNSD 单盘模式:文件目录最底层就直接是可读文件
  2. 目标
    只迁移部分指定文件夹和文件
  3. 方法
    在MinIO部署的同服务器上配置一个新的MinIO服务器,本地完成数据迁移后打包发布到目标服务器再运行
  4. 软件信息
    • 操作系统:Windows
    • MinIO服务端口:9000,管理员用户名:admin,管理员密码:123456

二. 部署迁移服务

  1. 从原MinIO启动目录中复制mc.exe、minio.exe文件到新目录(假设目录是D:\minio)中,配置启动脚本,设定端口号为9002(避开原服务9000端口),示例脚本如下
    # start.ps1
    # 1. 设置管理员用户名和密码
    $env:MINIO_ROOT_USER = "admin"
    $env:MINIO_ROOT_PASSWORD = "123456"
    # 2. 指定数据目录路径 (如果不存在会自动创建)
    $dataDir = "D:\minio\data"
    # 3. 启动 MinIO 服务
    .\minio.exe server $dataDir --address ":9002" --console-address ":9003"
    
  2. 使用脚本启动新的MinIO服务,原MinIOn服务保持启动,在新服务的目录中启动命令提示符
  3. 创建别名:执行以下命令(示例命令,需要按照实际情况调整)
    :: 语法:.\mc.exe alias set 别名 http://<旧MinIO IP>:9000 管理员用户名 管理员密码
    :: 这里用old代表原MinIO,temp代表新MinIO
    .\mc.exe alias set old http://localhost:9000 admin 123456
    .\mc.exe alias set temp http://localhost:9002 admin 123456
    
  4. 创建桶:需要在新的MinIO中创建需要迁移文件的老MinIO同名桶,这里用box作为桶名示例
    :: 语法:.\mc.exe mb 目标MinIO别名/桶名
    .\mc.exe mb temp/box
    
  5. 迁移方式
    • 目录迁移
      :: 语法:.\mc.exe mirror --overwrite 原MinIO别名/桶名/要迁移的目录名/ 新MinIO别名/同名桶名/同名要迁移的目录名/
      .\mc.exe mirror --overwrite old/box/files1/ temp/box/files1/
      
    • 单文件迁移
      :: 语法:.\mc.exe cp 原MinIO别名/桶名/要迁移的目录名/要迁移的文件名 新MinIO别名/同名桶名/同名要迁移的目录名/同名要迁移的文件名
      .\mc.exe cp old/box/files1/fileName1 temp/box/files1/fileName1
      
  6. 批量迁移:如果文件或者文件夹比较多,可以用批处理脚本执行,创建文本文件,编辑内容后另存为migrate.ps1到mc.exe同目录,示例
    $prefixes = @(
    	"box/upload/20260214/c585e1ecfb6340db728c18f86f514cc1.mp4",
    	"box/upload/20260214/367d62d1315edb76192121866a373a0c.mp4",
    	"box/upload/20260924/de8fd0e465d7073971bc39f7c5ee09f5.jpg"
    )
    
    foreach ($p in $prefixes) {
    	Write-Host "正在迁移: $p"
    	.\mc.exe cp "old/$p" "temp/$p"
    }
    
    Read-Host "按回车键退出"
    
  7. 运行批处理文件
    :: 如果是cmd命令窗,执行下面一行命令切换到powershell
    powershell
    :: 运行批处理文件
    .\migrate.ps1
    :: 如果提示策略限制,先执行以下命令,再运行批处理文件
    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
    
  8. (可选)设置新MinIO的桶为public
    :: 语法:.\mc.exe anonymous set public 新MinIO别名/桶名
    .\mc.exe anonymous set public temp/box
    
  9. 清理别名:新创建的别名,使用完毕后务必及时清理
    :: 查看别名列表
    .\mc.exe alias list
    :: 删除别名
    :: 语法:.\mc.exe alias rm 需要删除的别名
    .\mc.exe alias rm old
    .\mc.exe alias rm temp
    :: 删完再验证
    .\mc.exe alias list
    
  10. 停止新MinIO服务后,将整个MinIO目录打成压缩包,复制到新服务器中,解压
  11. 需要调整启动脚本start.ps1中$dataDir、--address、--console-address
  12. 调整完毕后,运行启动脚本,可以从web管理端检查迁移的文件是否可用
posted @ 2026-10-19 10:40  苍凉温暖  阅读(10)  评论(0)    收藏  举报