文档

启用双向服务端存储桶复制

本页中的过程会创建新的存储桶复制规则,用于在 MinIO 存储桶之间对对象执行双向“主动-主动”同步。

主动-主动复制在两个远程集群之间同步数据。

本教程介绍如何在两个 MinIO 集群之间配置主动-主动复制。有关在三个或更多 MinIO 集群之间进行多站点复制的教程,请参见 启用多站点服务端存储桶复制

要求

您必须满足 存储桶复制要求 中描述的所有存储桶复制基础要求。

此外,要设置主动-主动存储桶复制,您还必须满足以下附加要求:

访问两个集群

要设置主动-主动存储桶复制,您必须能够通过网络访问两个部署,并拥有具有所需权限的登录凭证。

您可以安装 mc 并通过命令行访问这些部署。 使用 mc alias set 命令为两个 MinIO 部署创建别名。

创建别名时,需要为部署中的某个用户指定 access key。 该用户**必须**具有在该部署上创建和管理用户及策略的权限。

具体而言,请确保该用户*至少*具有以下权限:

注意事项

使用一致的复制设置

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

  • 删除操作 的复制

  • 删除标记的复制

  • 现有对象的复制

  • 仅元数据变更的复制

为存储桶配置复制规则时,请确保参与主动-主动复制的两个 MinIO 部署使用*相同*的复制行为,以确保对象同步一致且可预测。

现有对象的复制

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

MinIO 要求使用 mc replicate add --replicatemc replicate update --replicate 显式启用现有对象复制,并包含 existing-objects 复制功能标志。 此过程包含启用现有对象复制所需的标志。

删除操作的复制

MinIO 支持将删除操作复制到目标存储桶。 具体而言,MinIO 可以复制版本控制中的 Delete Markers 以及特定已版本化对象的删除:

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

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

MinIO 要求使用 mc replicate add --replicatemc replicate update --replicate 显式启用删除操作复制。 此过程包含启用删除操作和删除标记复制所需的标志。

MinIO 不会 复制因应用 lifecycle management expiration rules 而产生的删除操作。 请在源存储桶和目标存储桶上配置匹配的过期规则,以确保对象过期行为一致。

有关更完整的文档,请参见 删除操作的复制对象删除

多站点复制

MinIO 支持为每个存储桶或存储桶前缀配置多个远程目标。 这使得可以在 MinIO 部署之间配置多站点主动-主动复制。

本过程介绍 两个 MinIO 站点之间的主动-主动复制。 您可以针对复制网格中的每一“对”MinIO 部署重复此过程。有关专门教程,请参见 启用多站点服务端存储桶复制

操作步骤

使用命令行 mc 配置双向存储桶复制

此过程会在两个 MinIO 部署之间创建双向、主动-主动复制。

此过程假定您已使用具有 所需复制权限 的用户为每个部署定义了别名。

Changed in version 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 指定 ALIAS/BUCKET 要复制到的远端 MinIO 部署和存储桶。

    USER:PASSWORD 必须对应远端部署上具有 所需复制权限 的用户。

    HOSTNAME:PORT 必须能解析到远端部署上可访问的 MinIO 实例。 BUCKET 必须已存在,并满足其他所有 复制要求

  • --replicate "delete,delete-marker,existing-objects" 标志会启用以下复制功能:

    有关更完整的文档,请参阅 mc replicate add --replicate。 省略任意字段即可禁用对应组件的复制。

可按需为 mc replicate add 指定其他受支持的可选参数。

在另一个 MinIO 部署上重复此步骤。 将 ALIAS--remote-bucket 的值修改为与第一个部署对应。

完成此步骤后,您应已配置两条复制规则:每个部署上一条,并指向另一个部署上的存储桶。 使用 mc replicate ls 命令验证已创建的复制规则。

2) 验证复制配置

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

mc cp ~/foo.txt ALIAS/BUCKET

使用 mc ls 验证目标存储桶中存在该对象:

mc ls ALIAS/BUCKET

通过将另一个对象复制到第二个部署,并验证该对象会复制到第一个部署,来重复执行此测试。

当两个对象都存在于两个部署上时,您就已成功在 MinIO 存储桶之间设置了双向、主动-主动复制。

See also