文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

启用多站点服务器端存储桶复制

本页面的过程配置多个MinIO部署之间的自动服务器端存储桶复制。多站点主动-主动复制构建于启用双向服务器端存储桶复制需要额外考虑的程序,以确保在所有站点上实现可预测的复制行为。

Active-Active Replication synchronizes data between multiple remote deployments.

多站点主动-主动复制配置可跨越多个机架、数据中心或地理位置。配置和维护多站点环境的复杂性通常随站点数量和每个站点规模增加而提升。企业实施多站点复制时应考虑采用MinIO SUBNET提供获取解决该用例所需的专业知识、规划及工程资源的支持。

另请参阅

需求

您必须满足存储桶复制的基本要求中所述的所有条件Bucket Replication Requirements.

此外,要创建多站点存储桶复制设置,您还必须满足以下附加要求:

访问所有集群

您必须具备网络访问权限,并且拥有对所有部署的正确权限登录凭据,才能设置多站点双活存储桶复制。

您可以通过安装来访问部署mc以及使用命令行。 使用mc alias set为每个 MinIO 部署创建别名的命令。

别名创建需要为部署上的用户指定访问密钥。 该用户必须拥有在部署中创建和管理用户及策略的权限。

具体来说,确保用户拥有至少:

注意事项

点击展开以下任意内容:

使用一致的复制设置

MinIO支持自定义复制配置,以启用或禁用以下复制行为:

  • Replication of删除操作

  • 删除标记的复制

  • 现有对象的复制

  • 仅元数据更改的复制

当配置存储桶的复制规则时,请确保所有参与多站点复制的 MinIO 部署都使用相同复制行为,以确保对象的一致性和可预测的同步。

现有对象的复制

MinIO 支持自动复制存储桶中的现有对象。

MinIO 需要明确启用现有对象的复制功能,使用mc replicate add --replicate or mc replicate update --replicate并包括existing-objects复制功能标志。 此过程包括启用现有对象复制所需的标志。

删除操作的复制

MinIO 支持复制删除操作到目标存储桶。 具体来说,MinIO可以复制版本控制删除标记以及特定版本化对象的删除:

  • 对于对象的删除操作,MinIO复制也会在目标存储桶上创建删除标记。

  • 对于对象版本的删除操作,MinIO 复制也会删除目标存储桶中的这些版本。

MinIO 需要明确启用删除操作的复制功能,通过mc replicate add --replicate or mc replicate update --replicate此过程包含启用删除操作和删除标记复制所需的标志。

MinIO 确实由应用程序执行导致的复制删除操作生命周期管理过期规则为所有复制站点上的存储桶配置匹配的过期规则,以确保对象过期策略的一致应用。

过程

此过程需要为参与多站点复制配置的每个 MinIO 部署重复执行步骤。根据部署数量的不同,此过程可能需要大量时间和细致的实施。MinIO 建议通读整个流程之前尝试实施文档中记录的步骤。

使用命令行配置多站点存储桶复制mc

这个过程使用占位符ALIAS引用别名将每个配置用于复制的 MinIO 部署。 将这些值替换为每个 MinIO 部署的相应别名。

此过程假设每个别名对应一个具有必要的复制权限.

在版本 RELEASE.2022-12-24T15-21-38Z 中的变更:mc replicate add自动创建必要的复制目标,无需使用已弃用的mc admin remote bucket add命令。 此过程仅记录截至该版本的过程。

1) 创建新的存储桶复制规则

使用mc replicate add为每个 MinIO 部署添加新复制规则的命令。

mc replicate add ALIAS/BUCKET \
   --remote-bucket 'https://USER:PASSWORD@HOSTNAME:PORT/BUCKET' \
   --replicate "delete,delete-marker,existing-objects"
  • 替换ALIAS随着别名原始 MinIO 部署的名称必须匹配上一步创建远程目标时指定的存储桶。

  • 替换BUCKET源部署中要复制的存储桶名称。

  • 替换--remote-bucket指定远程 MinIO 部署和存储桶ALIAS/BUCKET副本。

    TheUSER:PASSWORD必须对应于远程部署上的一个用户,该用户具有必要的复制权限.

    TheHOSTNAME:PORT必须解析为远程部署中可访问的 MinIO 实例。BUCKET必须存在且满足所有其他要求复制要求.

  • The--replicate "delete,delete-marker,existing-objects"flag 启用以下复制功能:

    mc replicate add --replicate有关更完整的文档。 省略任何字段以禁用该组件的复制。

指定任何其他支持的mc replicate add.

对参与多站点复制配置的每个远程 MinIO 部署重复这些命令。 例如,由 MinIO 部署组成的多站点复制配置minio1, minio2minio3需要在每个部署的每个远程仓库上重复此步骤。

具体来说,在此场景中,对每个部署执行此步骤两次:

  • minio1部署,一次针对一个规则minio2并再次为单独的规则minio3.

  • minio2部署,一次针对一个规则minio1并再次为单独的规则minio3.

  • minio3部署,一次针对一个规则minio1并再次为单独的规则minio2.

2) 验证复制配置

使用mc cp将新对象复制到其中一个部署中的复制存储桶。

mc cp ~/foo.txt ALIAS/BUCKET

使用mc ls要验证对象是否存在于目标存储桶中:

mc ls ALIAS/BUCKET

在每个部署上重复此测试,方法是复制一个新的唯一文件,并检查该文件是否已复制到其他每个部署中。

你也可以使用mc stat检查文件以查看当前状态复制阶段对象的。