复制策略深入探讨 您所在的位置:网站首页 可复制策略 复制策略深入探讨

复制策略深入探讨

2024-07-15 09:17| 来源: 网络整理| 查看: 265

在之前的博客中,我们讨论了复制最佳实践和不同类型的复制,例如批量、站点和存储桶。但是,随着所有这些不同类型的复制类型的出现,人们不得不想知道在哪里使用哪种复制策略?从现有 S3 兼容数据存储迁移数据时,您使用 mc mirror 还是 Batch?在集群之间进行复制时,应该使用站点复制还是存储桶复制?

今天我们将揭开这些不同复制策略的神秘面纱,看看在哪种情况下应该使用哪种策略。

从现有源复制

通常,如果您本地驱动器或现有 S3 兼容存储上已有数据,我们建议您使用以下两种方法之一来复制数据。

批量复制:这必须需要 MinIO 或其他 S3 兼容存储(例如 AWS)的现有源。

使用 mc mirror :这可以是本地目录或 NFS 挂载等。

在详细介绍之前,让我们先看一下一些先决条件。

在 mc 中为 MinIO 集群创建一个名为 miniostore 的 alias 。

mc alias set miniostore

在 miniostore 中创建一个存储桶, olderstore 中的数据将传输到其中。

mc mb miniostore/mybucket

在 mc 中为 S3 兼容存储中的现有存储桶创建另一个 alias 。

mc alias set olderstore

在这种情况下,我们假设 oldstore 中已经有一个名为 mybucket 的存储桶。

让我们看一下如何使用批量复制将数据从现有的 S3 兼容源迁移到 MinIO 存储桶。

为批量复制配置创建yaml

mc batch generate olderstore/ replicate

您应该看到类似于下面的 replication.yaml 文件, source 是 olderstore ,目标是 miniostore 。

replicate: apiVersion: v1 # source of the objects is `olderstore` alias source: type: TYPE # valid values are "s3" bucket: BUCKET prefix: PREFIX # NOTE: if source is remote then target must be "local" # endpoint: ENDPOINT # credentials: # accessKey: ACCESS-KEY # secretKey: SECRET-KEY # sessionToken: SESSION-TOKEN # Available when rotating credentials are used # target where the objects is `miniostore` alias target: type: TYPE # valid values are "s3" bucket: BUCKET prefix: PREFIX # NOTE: if target is remote then source must be "local" # endpoint: ENDPOINT # credentials: # accessKey: ACCESS-KEY # secretKey: SECRET-KEY # sessionToken: SESSION-TOKEN # Available when rotating credentials are used [TRUNCATED]

使用以下命令执行批量复制

mc batch status olderstore/ E24HH4nNMcgY5taynaPfxu ●∙∙ Objects: 28766 Versions: 28766 Throughput: 3.0 MiB/s Transferred: 406 MiB Elapsed: 2m14.227222868s CurrObjName: share/doc/xml-core/examples/foo.xmlcatalogs

使用上面的复制作业 ID(在本例中为 E24HH4nNMcgY5taynaPfxu ),我们可以找到批处理作业的状态。

mc batch list olderstore/ ID TYPE USER STARTED E24HH4nNMcgY5taynaPfxu replicate minioadmin 1 minute ago

您可以列出并查找当前正在运行的所有批处理作业的配置。

mc batch describe olderstore/ E24HH4nNMcgY5taynaPfxu replicate: apiVersion: v1 mc batch describe olderstore/ E24HH4nNMcgY5taynaPfxu

例如,如果批处理作业使网络饱和并且您需要稍后在流量最少时恢复它,您也可以取消并启动批处理作业。

mc mirror

让我们快速看一下 mc mirror 在这种情况下如何工作。

mc mirror --watch olderstore/mybucket miniostore/mybucket

上面的命令与rsync类似。它不仅会将数据从 olderstore 复制到 miniostore ,还会在 olderstore 上查找传入的较新对象,然后将它们复制到 miniostore

您可以比较两个桶,看看数据是否复制成功。

mc diff olderstore/mybucket miniostore/mybucket

就这么简单。

哪个是更好的选择?

虽然 mc mirror 看起来简单明了,但我们实际上推荐使用批量复制方法从现有的S3兼容存储中迁移数据,原因有几个。

批量复制在服务器端运行,而 mc mirror 在客户端运行。这意味着批复制拥有运行 MinIO 服务器来执行批处理作业的全部可用资源。另一方面, mc mirror 受到运行命令的客户端系统的瓶颈,因此您的数据会走更长的路线。换句话说,使用批量复制时,跟踪路由将类似于 olderstore -> miniostore ,但使用镜像时,将类似于 olderstore -> mc mirror -> miniostore 。

批处理作业是一次性过程,允许精细控制复制。例如,在运行复制时,如果您发现网络已饱和,您可以取消批量复制作业,然后在流量最少的非工作时间恢复。如果某些对象无法复制,作业将重试多次,以便最终复制对象。

那么批量复制就没有缺点吗?嗯,不是很多。我们在现实世界中看到的一个可能的问题是,有时批量复制很慢而且不是即时的。根据网络传输和速度,与其他方法相比,您可能会发现速度有些慢。话虽这么说,我们仍然建议批量复制,因为它更稳定,并且我们可以更好地控制数据迁移的方式和时间。

复制到另一个站点

一旦 MinIO 集群中有数据,您需要确保将数据复制到另一个站点的另一个 MinIO 集群,以实现冗余、性能和灾难恢复目的。有多种方法可以做到这一点,但在本例中我们讨论以下两种:

站点复制桶复制

一旦数据进入 MinIO 对象存储集群,它就提供了多种不同的复制和管理数据的可能性。

第一步是设置 3 个相同的 MinIO 集群,并分别将它们命名为 minio1、minio2 和 minio3。我们假设 site1 已使用批量复制将数据迁移到它。

mc alias set minio1 http:// minioadmin minioadmin mc alias set minio2 http:// minioadmin minioadmin mc alias set minio3 http:// minioadmin minioadmin

跨所有 3 个站点启用站点复制

mc admin replicate info minio1 SiteReplication enabled for: Deployment ID | Site Name | Endpoint f96a6675-ddc3-4c6e-907d-edccd9eae7a4 | minio1 | http:// 0dfce53f-e85b-48d0-91de-4d7564d5456f | minio2 | http:// 8527896f-0d4b-48fe-bddc-a3203dccd75f | minio3 | http://

验证跨 3 个站点的站点复制设置是否正确

mc admin replicate info minio1

使用以下命令检查当前复制状态

mc admin replicate status minio1

启用站点复制后,数据将自动开始在所有站点之间复制。根据要传输的数据量、网络和磁盘速度,跨站点同步对象可能需要几个小时到几天的时间。

如果花费的时间比平时更长,或者您仍然没有看到所有内容都已复制,则可以执行 resync 命令,如下所示

mc admin replicate resync start minio1 minio2 minio3

可以使用以下命令检查 status

mc admin replicate resync status minio1 minio2 minio3

最终所有数据将被复制到 minio2 和 minio3 站点。

桶复制

桶复制,顾名思义,是基于 ARN 在 MinIO 中的特定桶上设置复制。

设置以下两个MinIO别名

来源:

mc alias set minio1

目的地:

mc alias set minio2

在 minio2 端设置两个别名后,创建一个复制用户 repluser 并在具有权限的 minio2 端存储桶上为此用户设置用户策略执行本策略中列出的操作作为复制的最低要求。

mc admin user add minio2 repluser repluserpwd

设置 repluser 运行复制操作所需的最低策略

$ cat > replicationPolicy.json


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有