CentOS 上 MinIO 数据恢复实用技巧
一、先判断故障类型与优先级
二、有备份时的快速恢复
使用 MinIO 客户端 mc 从备份位置恢复
mkdir -p /home/minio/client
# 上传 mc 二进制到该目录后赋权
chmod +x /home/minio/client/mc
/home/minio/client/mc alias set backup http://<备份IP>:9000 <AK> <SK>
/home/minio/client/mc alias set target http://<目标IP>:9000 <AK> <SK>
# 桶级恢复(注意目标桶需存在;/ 结尾表示按对象键递归)
/home/minio/client/mc cp --recursive backup/mybucket/ target/mybucket/
# 全量恢复(目标上需预先存在同名桶,否则会报错)
/home/minio/client/mc cp --recursive backup/ target/
若数据由上层引擎(如 Doris/StarRocks)备份到 MinIO
SHOW SNAPSHOT ON <repo_name>;
RESTORE SNAPSHOT <db>.<snapshot_label>
FROM <repo_name>
PROPERTIES (
"backup_timestamp" = "2025-01-28-10-25-07",
"replication_num" = "1"
);
SHOW RESTORE FROM <db>\G;
三、无备份时的应急与自修复
# 列出对象历史版本
/home/minio/client/mc ls --versions target/mybucket/path/to/object
# 回滚到指定版本(通过复制旧版本为最新)
/home/minio/client/mc cp target/mybucket/path/to/object:VERSION target/mybucket/path/to/object
# 安装(CentOS 可用 EPEL)
sudo yum install -y epel-release
sudo yum install -y extundelete
# 只读分析并恢复(示例分区 /dev/sdb1)
sudo extundelete /dev/sdb1 --restore-all
# 或按文件/Inode 恢复
sudo extundelete /dev/sdb1 --restore-file /path/in/bucket/object
sudo extundelete /dev/sdb1 --restore-inode 24681
四、常见坑与排查要点
mc cp --recursive backup/ target/ 全量恢复时,目标上必须预先存在同名桶;可先脚本化创建桶再恢复。五、恢复后的验证与加固