关于minio的搭建和数据迁移
一、minio部署
1、创建数据目录
minio/data1
minio/data2
minio/data3
minio/data4
minio/logs
minio/conf
2、下载社区版本服务器:
地址:https://www.min.io/open-source/download/
将下载好的minio.exe放入minio/目录
3、创建启动文件
注意需要用户名和密码端口和原来一致
MINIO_ACCESS_KEY=***minio
MINIO_SECRET_KEY=***minio
端口默认9000
4、启动minio
访问:127.0.0.1:9000
二、数据迁移
1、安装客户端mc.exe
地址:https://www.min.io/open-source/download/
将下载好的mc.exe放入minio/目录
2、配置别名
# 配置 Linux MinIO 别名
mc alias set linux-minio http://*****:9000 minio ****
# 配置 Windows MinIO 别名
mc alias set windows-minio http://localhost:9000 minio *****
3、执行数据迁移(业务低峰期操作)
# 执行完整数据迁移(可能需要较长时间)
# 第一次完整迁移
mc mirror --overwrite --remove --retry --skip-errors linux-minio/ windows-minio/
# 后续增量迁移(业务低峰期)
mc mirror --overwrite --remove --retry --skip-errors --newer-than 6h linux-minio/ windows-minio/
# 单独迁移该文件,--overwrite覆盖目标端可能存在的旧版本,--retry 5增加重试次数
# mc cp --overwrite --retry 5 源端文件路径 目标端文件路径
mc cp --overwrite --retry 5 linux-minio/zkr/2022/2/22/16455381884902369.png windows-minio/zkr/2022/2/22/16455381884902369.png
4、验证数据完整性
# 比较两个 MinIO 实例的差异
mc diff linux-minio/ windows-minio/
# 检查存储桶数量
$linuxBuckets = (mc ls linux-minio | Measure-Object).Count
$winBuckets = (mc ls windows-minio | Measure-Object).Count
Write-Host "Linux Buckets: $linuxBuckets | Windows Buckets: $winBuckets"
# 随机选择对象验证
$randomBucket = (mc ls linux-minio | Select-Object -First 1).Split()[0]
$randomObject = (mc ls "linux-minio/$randomBucket" | Select-Object -First 1).Split()[0]
# 比较对象哈希值
$linuxHash = mc cat "linux-minio/$randomBucket/$randomObject" | Get-FileHash -Algorithm MD5 | Select-Object -ExpandProperty Hash
$winHash = mc cat "windows-minio/$randomBucket/$randomObject" | Get-FileHash -Algorithm MD5 | Select-Object -ExpandProperty Hash
Write-Host "Object: $randomBucket/$randomObject"
Write-Host "Linux Hash: $linuxHash | Windows Hash: $winHash"