MinIO服务器数据迁移方法

wylc123 1小时前 ⋅ 2 阅读

 

MinIO 服务器迁移(最常用:mc mirror 在线迁移,业务平滑割接)

核心原则:不要直接拷贝旧 MinIO 的 data 目录到新机器,分布式 / 纠删码集群直接拷磁盘目录大概率起不来、数据损坏;单节点单盘也不推荐,容易丢失元数据、版本、桶策略。 推荐方案:新服务器先部署全新 MinIO → mc mirror 全量同步 → 增量同步 → 业务切流量 → 旧集群下线MinIO

一、前置准备

  1. 新服务器部署 MinIO(版本建议≥旧集群版本,最好同版本;架构保持一致:旧是单节点,新就单节点;旧是分布式纠删码,新也同盘数纠删码)
  2. 开放网络:旧 MinIO、新 MinIO 的 9000 端口互通
  3. 安装 mc 客户端(MinIO 官方工具)

    3.1先查看服务器架构

uname -m

 执行结果:

  • x86_64 → amd64
  • aarch64 → arm64

果是 x86_64 (amd64)

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/

如果是 aarch64 (arm64)

wget https://dl.min.io/client/mc/release/linux-arm64/mc
chmod +x mc
mv mc /usr/local/bin/

下载不了可以直接浏览器下载,然后导入服务器。

验证 mc 是否正常

mc --version

能输出版本号就代表成功。

  1.  
  2. 配置两个 MinIO 别名(source 旧集群,dest 新集群)
# 旧MinIO
mc alias set source http://旧IP:9000 旧AK 旧SK
# 新MinIO
mc alias set dest http://新IP:9000 新AK 新SK

# 验证连通
mc ls source
mc ls dest

如果这里连接超时:检查防火墙 / 安全组放行 9000 端口

先检查所有桶是否开启版本(关键!)

# 列出所有桶
mc ls source

# 逐个查看版本状态,替换bucketname
mc version info source/bucketname

 返回 status: Un-versioned → 无版本,直接 mirror。

返回 status: Enabled → 开启版本,不能只用 mirror。

迁移脚本(裸机执行)

 moveMinio.sh

#!/bin/bash
# 遍历源所有桶,自动创建目标桶,然后mirror同步
for bucket in $(mc ls source | awk '{print $5}'); do
  echo "===== 处理桶: $bucket ====="
  mc mb dest/$bucket
  # 限速 20MiB,避免打满带宽,按需调整
  mc mirror --overwrite --limit-upload 20MiB source/$bucket dest/$bucket
done

第一次同步不要加 --remove!

第五步:业务割接流程

  1. 第一次全量同步跑完
  2. 业务不停机,再跑一次脚本做增量同步(迁移期间新增数据)
  3. 增量完成,执行差异校验
# 对比两边差异
mc diff source dest/
# 统计对象数量
mc stat source/bucket1
mc stat dest/bucket1
  1. 确认两边一致,最后一次同步加上 --remove,两边完全对齐
mc mirror --overwrite --remove source/bucket1 dest/bucket1

相关文章推荐
  • 该目录下还没有内容!

全部评论: 0 条

    我有话说: