Skip to content

minio

打开Minio官网打开Minio的github

官网介绍:MinIO 是一种高性能、S3 兼容的对象存储。
它专为大规模 AI/ML、数据湖和数据库工作负载而构建,并且它是由软件定义的存储。
不需要购买任何专有硬件,就可以在云上和普通硬件上拥有分布式对象存储。
MinIO拥有开源 GNU AGPL v3 和商业企业许可证的双重许可。

下载地址

打开官网下载地址

注意

minio/minio:RELEASE.2022-06-02T02-11-04Z之前版本用的是老的存储格式 minio/minio:RELEASE.2022-06-02T02-11-04Z及之后的版本会将文件存成目录的形式

docker部署minio

docker部署minio

dockercompose部署minio

创建名为docker-compose.yml的文件,内容如下

yml
services:
  minio:
    image: quay.io/minio/minio
    container_name: minio
    ports:
      - "9090:9090"
      - "9000:9000"
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin
    volumes:
      - "/data/minio/data:/data"
    command: server /data --console-address ":9090"
	restart: always
	networks:
	- 网络名

数据迁移

建议使用官方推荐的mc来进行数据迁移 mc 的命令如下

sh
alias       set, remove and list aliases in configuration file
ls          list buckets and objects
mb          make a bucket
rb          remove a bucket
cp          copy objects
mirror      synchronize object(s) to a remote site
cat         display object contents
head        display first 'n' lines of an object
pipe        stream STDIN to an object
share       generate URL for temporary access to an object
find        search for objects
sql         run sql queries on objects
stat        show object metadata
mv          move objects
tree        list buckets and objects in a tree format
du          summarize disk usage recursively
retention   set retention for object(s)
legalhold   set legal hold for object(s)
diff        list differences in object name, size, and date between two buckets
rm          remove objects
encrypt    manage bucket encryption config
event       manage object notifications
watch       listen for object notification events
undo        undo PUT/DELETE operations
policy      manage anonymous access to buckets and objects
tag         manage tags for bucket(s) and object(s)
ilm         manage bucket lifecycle
version     manage bucket versioning
replicate   configure server side bucket replication
admin       manage MinIO servers
update      update mc to latest release

不同版本迁移(使用mc)

docker下载mc

注意

下面的代码中source为需要迁移的宿主机,target为目标机 二者都需要用mc起别名(如果两个服务无法用mc链接,则两个机器上都要有mc)

可以链接两个服务的情况下

注意

由于直接连接会报错,所以让容器都使用同一个网络(报错如图所示);由于直接使用,mc的数据没有保存,所以需要使用数据卷

  • 需要替换的数据卷为F:\docker_volumes
  • 需要替换的网络为host
  • 需要替换的别名为sourcetarget
  • --rm 参数在命令执行完后自动删除容器

设置源 MinIO 别名

sh
docker run --rm --network host -v F:\docker_volumes\mc-config:/root/.mc minio/mc alias set source http://127.0.0.1:9000 minioadmin minioadmin

设置目标 MinIO 别名

sh
docker run --rm --network host -v F:\docker_volumes\mc-config:/root/.mc minio/mc alias set target http://127.0.0.1:9001 minioadmin minioadmin

查看别名设置是否成功

sh
docker run --rm --network host -v F:\docker_volumes\mc-config:/root/.mc minio/mc alias list

查看源 MinIO 中的桶(执行结果如下,我只建了一个名为bzl-bucket的桶)

sh
docker run --rm --network host -v F:\docker_volumes\mc-config:/root/.mc minio/mc ls source
text
[2025-01-03 14:10:29 UTC]     0B bzl-bucket/

迁移一个桶(多个桶就多复制粘贴一下)

sh
docker run --rm --network host -v F:\docker_volumes\mc-config:/root/.mc minio/mc mirror source/bzl-bucket target/bzl-bucket

迁移全部桶

sh
docker run --rm --network host -v F:\docker_volumes\mc-config:/root/.mc minio/mc mirror source target

新版minio直接迁移到老版minio后

两个机器无法链接的情况(导出再导入)

注意

mc导出后,文件会还原为原本的格式!!!

导出单个桶的数据(多个桶就多复制粘贴一下)

sh
docker run --rm --network host -v F:\docker_volumes\minio_backup:/backup -v F:\docker_volumes\mc-config:/root/.mc minio/mc cp --recursive source/bzl-bucket /backup/bzl-bucket

导出所有桶

sh
docker run --rm --network host -v F:\docker_volumes\minio_backup:/backup -v F:\docker_volumes\mc-config:/root/.mc minio/mc cp --recursive source/ /backup/

备份文件导入到老版本minio 备份文件导入到新版本minio

导入单个桶(不会自动创建桶)(多个桶就多复制粘贴一下)

sh
docker run --rm --network host -v F:\docker_volumes\minio_backup:/backup -v F:\docker_volumes\mc-config:/root/.mc minio/mc cp --recursive /backup/bzl-bucket target/bzl-bucket

导入所有桶(不会自动创建桶)

sh
docker run --rm --network host -v F:\docker_volumes\minio_backup:/backup -v F:\docker_volumes\mc-config:/root/.mc minio/mc cp --recursive /backup/ target/

导入所有桶(mirror命令会自动创建桶)

sh
docker run --rm --network host -v F:\docker_volumes\minio_backup:/backup -v F:\docker_volumes\mc-config:/root/.mc minio/mc mirror /backup/ target/

同版本迁移(不推荐这个方法,建议用mc来迁移)

注意

该方法只适用于同版本的minio!!! 做法:只需将需要迁移的数据拷贝到目标minio的数据目录即可(通常为/data)

将需要迁移的目录或者桶目录打包

sh
zip -r 目录

将打好的zip资源包传输到目标服务器的数据卷位置,上面docker对应的数据卷位置为/data/minio/data 解压zip资源包

sh
cd /data/minio/data
unzip 资源包

访问服务器中minio控制台,查看是否正常

127.0.0.1:9090

版本界面查看

测试镜像从docker hub上拉的

大于这个版本的界面:minio/minio:RELEASE.2022-12-12T19-27-27Z

小于这个版本的界面:minio/minio:RELEASE.2022-12-02T19-19-22Z

小于这个版本的界面:minio/minio:RELEASE.2022-06-07T00-33-41Z

小于这个版本的界面:minio/minio:RELEASE.2022-03-03T21-21-16Z

之后的没统计了