minio 数据库迁移
windows 迁移脚本
解决cmd乱码问题
chcp 65001
添加迁移源和目的
\windows-mc.RELEASE.2021-11-05T10-05-06Z alias set instance-A http://127.0.0.1:9000 minio minio#password
大数据量桶迁移
在桶数据比较大的情况下,直接进行mc mirror
迁移是不行的,需要将桶内每个文件夹分批迁移:
下面这个脚本就是指定一个文件夹进行迁移:
在此场景下,bucket0/dir中因为数据量比较大,每次同步时间长了会中断,且无法断点续传。因此,对于其每个子文件夹进行分配迁移。因此对于每个子文件夹,mc程序都会重新连接minio的9000端口进行同步,把大任务分割成多个小任务来避免出现上面的无法断点续传的问题
@echo off
setlocal enabledelayedexpansionREM 设置MinIO路径
set "MC_PATH=instance-A/bucket0/dir"
set "DEST_PATH=instance-B/bucket0/dir"
REM 执行mc命令并处理输出
.\windows-mc.RELEASE.2021-11-05T10-05-06Z ls %MC_PATH% > temp_output.txt 2>&1REM 检查命令是否执行成功
if %errorlevel% neq 0 (echo Error: mc command failed with error code %errorlevel%echo Please check if the mc executable exists and the path is correctgoto :cleanup
)echo Listing all subfolders in %MC_PATH%:
echo ========================================for /f "tokens=1,2,3,4,5" %%a in ('.\windows-mc.RELEASE.2021-11-05T10-05-06Z ls %MC_PATH%') do (REM %%a=日期部分1, %%b=日期部分2, %%c=日期部分3, %%d=大小, %%e=文件夹名if not "%%e"=="" (set "folder=%%e"set "folder=!folder:\=!"set /a count+=1echo Folder !count!: !folder!.\windows-mc.RELEASE.2021-11-05T10-05-06Z mirror %MC_PATH%/!folder! %DEST_PATH%/!folder!)
)if !count! equ 0 (echo No subfolders found in the specified path.
) else (echo ========================================echo Total subfolders found: !count!
):cleanup
REM 清理临时文件
if exist temp_output.txt del temp_output.txtendlocal
脚本逻辑
# 输出如下
$ mc ls bucket0/dir
[2025-10-19 14:25:02 CST] 0B 2025-02-11\
[2025-10-19 14:25:02 CST] 0B 2025-02-14\
[2025-10-19 14:25:02 CST] 0B 2025-02-17\
[2025-10-19 14:25:02 CST] 0B 2025-02-18\
[2025-10-19 14:25:02 CST] 0B 2025-03-14\
[2025-10-19 14:25:02 CST] 0B 2025-03-17\
[2025-10-19 14:25:02 CST] 0B 2025-03-30\
[2025-10-19 14:25:02 CST] 0B 2025-04-01\
[2025-10-19 14:25:02 CST] 0B 2025-04-03\
因此,对于每一行输出,按空格分成5列,截取其日期部分,并去掉\