You need to enable JavaScript to run this app.
导航
使用火山 TOS 跨地域迁移数据
最近更新时间:2024.09.05 15:33:02首次发布时间:2023.09.21 10:22:54

云搜索服务 ES 实例支持数据备份和恢复能力,结合对象存储 TOS 的跨区域复制功能,可以在火山引擎云搜索服务中实现跨地域离线迁移数据。本文介绍使用 ES 的备份与恢复能力实现跨地域迁移数据的流程。

方案概述

图片
在华南地域的源端 ES 实例需要将数据迁移到华北地域的目标端 ES 实例中。

  1. 源端 ES 实例通过执行数据备份,将生成的快照文件存储在华南地域的 TOS 存储桶。
  2. 华南地域的 TOS 存储桶通过跨地域复制功能,将快照文件拷贝到华北地域的 TOS 存储桶。
  3. 目标端的 ES 实例通过备份恢复,从 TOS 存储读取快照文件并恢复目标索引数据。

准备工作

  1. 创建源端 ES 实例和 TOS 存储桶,要求两者处于相同地域(比如华南)。相关文档,请参见创建 ESCloud 实例创建存储桶
  2. 创建目标端 ES 实例和 TOS 存储桶,要求两者处于相同地域(比如华北)。相关文档,请参见创建 ESCloud 实例创建存储桶

步骤一:源端 ES 实例创建数据备份

源端 ES 实例通过执行数据备份,将生成的快照文件存储在相同地域的 TOS 存储桶中。

  1. 登录云搜索服务控制台,在顶部导航栏切换地域。
  2. 实例列表页面,单击目标实例名称,进入实例详情页。
  3. 创建快照。
    ES 实例支持自动和手动创建快照,请选择合适的方式创建快照。具体操作,请参见快照备份与恢复

步骤二:源端 TOS 存储桶执行跨地域复制

源端 TOS 存储桶通过跨地域复制功能,将快照文件拷贝到目标地域的 TOS 存储桶。

  1. 登录对象存储控制台

  2. 在左侧导航栏选择桶列表,然后在桶列表页面筛选并单击源端地域的目标桶名称。

  3. 在左侧导航栏选择容错与容灾 > 跨区域复制,然后单击创建规则

  4. 创建跨区域复制规则对话框,选择目标 TOS 存储桶,配置跨地域复制规则,然后单击确定
    图片
    此处仅简单介绍 TOS 跨区域复制规则的参数配置,如需详细了解,请参见跨区域复制

    配置

    说明

    源存储桶所在地

    源存储桶所在地域。

    源存储桶

    源存储桶名称。

    目的存储桶所在地

    选择需要复制文件的目的存储桶所在地域。

    目的存储桶

    选择需要复制文件的目的存储桶。

    目的存储类型

    选择跨区域复制后的文件存储类型,本文以继承目标桶为例。

    同步范围

    选择跨区域复制的源数据范围,本文以整个存储桶为例。

    • 整个存储桶:将整个存储桶内的所有文件复制到目的存储桶。
    • 指定前缀:设置文件前缀,将匹配该前缀的文件复制到目的存储桶。

    同步历史对象

    选择是否需要同步历史文件到目的存储桶,本文以同步历史数据为例。

    • 同步:将历史文件同步至存储桶。
    • 不同步:不同步历史文件,仅同步规则创建之后新增或更新的文件。
  5. 查看同步进度。
    跨区域复制规则创建完成后,自动启用规则。跨区域复制采用异步复制机制,根据您的文件大小,需要的时间为几分钟至几小时不等。当提示同步100%,则表示同步完成。
    同步完成后,您也可以前往目标端 TOS 存储桶,查看文件是否已经同步。
    图片

步骤三:目标端 ES 恢复数据

目标端 ES 实例通过备份恢复,从 TOS 存储读取数据并恢复目标索引数据。

  1. 登录目标端 ES 实例的 Kibana 控制台。

    1. 登录云搜索服务控制台,在顶部导航栏切换地域。
    2. 实例列表页面,选择目标实例名称,单击实例后方的 Kibana,使用公网地址访问 Kibana 控制台。
      公网访问 Kibana 控制台,需要提前开启公网访问,请参见开启 Kibana 公网访问
      图片
    3. 在 Kibana 访问页面输入用户名和密码,单击 Log in,登录 Kibana。
      用户名为 admin,密码为创建实例时设置的密码。如果您忘记了登录密码,您可在实例详情页面重置密码,相关文档,请参见重置实例密码
      图片
    4. 在 Kibana 菜单栏选择 Management > Dev Tools
  2. 基于目标端 TOS 存储桶创建一个快照存储库。
    Dev Tools 页面执行以下命令,创建快照存储库。

    PUT _snapshot/<repository-name>/
    {
        "type": "s3",
        "settings": {
          "bucket" : "tosbucket-name", 
          "path_style_access" : "false",
          "endpoint" : "tos-s3-cn-beijing.ivolces.com",  
          "protocol" : "https",
          "client" : "default",
          "base_path" : "manual-snapshot-o-00****hn7-doc-shnapshot-source",  
          "region" : "cn-beijing",
          "access_key": "AK****NTQyYjY5YTY",  
          "secret_key": "Tm1Oa*****VE0TVdZeVkyWQ=="
        }
    }
    

    配置项

    描述

    <repository-name>

    自定义设置快照存储库的名称,如 doc_restore_1。

    type

    指定存储库类型,设置为s3

    bucket

    目标端 TOS 存储桶的名称,即可以从该存储桶中读取已存在的快照文件。

    path_style_access

    是否使用路径样式访问存储库,一般保持默认 false 即可。

    endpoint

    目标端 TOS 存储桶的访问地址。

    protocol

    通信协议,默认为 HTTPS。

    client

    指定与存储库通信所使用的客户端,一般保持默认 default 即可。

    base_path

    目标端 TOS 桶存放快照文件的路径。

    region

    目标端 TOS 桶所属地域。

    access_key

    访问 TOS 存储桶的账号 Access Key。

    secret_key

    访问 TOS 存储桶的账号 Secret Access Key。

  3. 恢复目标索引数据。
    Dev Tools 页面执行以下命令,恢复目标索引数据。

    POST /_snapshot/<repository-name>/<snapshot-name>/_restore
    {
       "indices": "custom*"
    }
    
    • <repository-name>:快照存储库,即您创建的存储库名称。
    • <snapshot-name>:快照名称,即在源端 ES 创建的快照名称;也可以从 TOS 存储路径中获取。
    • indices:需要恢复的目标索引。多个索引使用英文逗号(,)分隔;使用减号(-)表示删除索引;使用通配符(*)匹配符合该表达式的索引。
      返回如下信息,表示恢复成功。
    {
        "accepted" : true
    }
    

结果验证

跨地域恢复索引数据后,您可以在目标实例中查看集群健康状态、索引健康状态、索引名称、占用存储大小等信息。

  1. Dev Tools 中执行GET /_cluster/health?pretty=true命令,查看集群健康状态。
    返回状态为 green,表示集群健康,集群中所有主分片和副本分片都可用。
    图片
  2. Dev Tools 中执行GET /_cat/indices?v命令,查看索引详情。
    图片
    您可以从返回信息中查看索引健康状态、索引名称、占用存储大小等信息。
    如上图所示:表示恢复了一个名为customer的索引,健康状态为green,其主分片和副本分片占用集群总存储空间 22.7KB。