启用服务端单向存储桶复制
本页面中的过程会创建一条新的存储桶复制规则,用于将对象从一个 MinIO 存储桶单向复制到另一个 MinIO 存储桶。 这些存储桶既可以位于同一个 MinIO 部署中,也可以位于不同的 MinIO 部署中。
如需在 MinIO 存储桶之间配置双向“active-active”复制,请参见 启用双向服务端存储桶复制。
如需在 MinIO 部署之间配置多站点“active-active”复制,请参见 启用多站点服务端存储桶复制
Note
如需在任意兼容 S3 的服务之间配置复制(不一定是 MinIO),请使用 mc mirror。
要求
复制要求所有参与的集群满足 以下要求。 本过程假定你已经审阅并验证了这些要求。
如需更多详细信息,请参见 存储桶复制要求 页面。
注意事项
点击展开以下任一项:
现有对象的复制
MinIO 支持自动复制存储桶中的现有对象。
MinIO 要求使用 mc replicate add --replicate 或 mc replicate update --replicate 显式启用现有对象复制,并包含 existing-objects 复制功能标志。
本过程包含启用现有对象复制所需的标志。
删除操作的复制
MinIO 支持将 S3 DELETE 操作复制到目标存储桶。
具体来说,MinIO 可以复制版本控制的 Delete Markers,以及删除特定版本对象的操作:
对于对象的删除操作,MinIO 复制也会在目标存储桶上创建删除标记。
对于对象某个版本的删除操作,MinIO 复制也会在目标存储桶上删除这些版本。
MinIO 要求使用 mc replicate add --replicate 或 mc replicate update --replicate 显式启用删除操作复制。
本过程包含启用删除操作和删除标记复制所需的标志。
MinIO 不会 复制因应用 生命周期管理过期规则 而产生的删除操作。
多站点复制
MinIO 支持为每个存储桶或存储桶前缀配置多个远程目标。 例如,你可以将一个存储桶配置为把数据复制到两个或更多远程 MinIO 部署,其中一个部署是 1:1 副本(复制包括删除在内的所有操作),另一个部署则是完整的历史记录(仅复制非破坏性的写入操作)。
本过程说明了到单个远程 MinIO 部署的单向复制。 你可以重复本教程,将单个存储桶复制到多个远程目标。
过程
使用命令行 mc 配置单向存储桶复制
本过程使用 别名 SOURCE 和 REMOTE 来引用每个配置了复制的 MinIO 部署。
请将这些值替换为你的目标 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 指定其他受支持的可选参数。
2) 验证复制配置
在其中一个部署上,使用 mc cp 将新对象复制到已启用复制的存储桶中。
mc cp ~/foo.txt ALIAS/BUCKET
使用 mc ls 验证目标存储桶中存在该对象:
mc ls ALIAS/BUCKET
See also
使用
mc replicate update命令修改现有复制规则。使用
mc replicate update命令并配合--state "disable"标志禁用现有复制规则。使用
mc replicate rm命令删除现有复制规则。