首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云ES集群通过COS实现跨地域备份与恢复

腾讯云ES集群通过COS实现跨地域备份与恢复

作者头像
腾讯云大数据
修改2021-01-08 16:21:11
1.1K0
修改2021-01-08 16:21:11
举报

腾讯云 Elasticsearch Service】高可用,可伸缩,云端全托管。集成X-Pack高级特性,适用日志分析/企业搜索/BI分析等场景


在日常开发及运维工作中,我们经常会遇到一些内外部的客户希望将不同地域的es集群迁移到另外一个地域。例如有的客户es集群原来是在北京地域,由于一些原因,现在想要将集群迁移到上海地域来。下面我们就详细介绍下借助腾讯云COS和es的snapshot功能来实现跨地域的数据迁移。

我们的演示是将北京的集群数据迁移到上海集群来,因此北京集群作为源地域集群。上海集群作为目的地域集群。

一、源地域备份

1、源地域cos中创建bucket

创建bucket:

北京地域cos创建bucket
北京地域cos创建bucket

创建完bucket后,在该bucket下创建一个路径:

北京地域cos
北京地域cos

2、源地域创建repository仓库

PUT _snapshot/my_cos_backup
{
    "type": "cos",
    "settings": {
        "app_id": "1254139681",
        "access_key_id": "xxxx",
        "access_key_secret": "xxxx",
        "bucket": "wurong-es-snapshpt",
        "region": "ap-beijing",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "es/"
    }
}
  • app_id:腾讯云账号 APPID。
  • access_key_id:腾讯云 API 密钥 SecretId。
  • access_key_secret:腾讯云 API 密钥 SecretKey。
  • bucket:COS Bucket 名字,名字不能带-{appId}后缀
  • region:COS Bucket 地域,此地域必须与 ES 集群为同一地域。地域编码可参考 地域和可用区
  • base_path:备份目录。

执行如下:

创建的仓库名称为:my_cos_backup,bucket名称为:wurong-es-snapshpt,base_path为es/ .

创建好仓库后,我们可以使用如下命令查看

GET /_snapshot/my_cos_backup

返回如下:

查看创建的repository
查看创建的repository

可以看到仓库是创建成功了,下面我们把该集群上的所有索引快照都备份到该仓库下。

3、源地域备份snapshot

在上一步我们创建了my_cos_backup的repository,下面我们就开始将snapshot备份到该repository中。

PUT /_snapshot/my_cos_backup/es_snapshot

其中:my_cos_backup为repository的名字,es_snapshot是本次打快照的名字。

返回如下:

创建repository
创建repository

该命令是异步执行的,即执行完该命令后立马返回,可以使用下面的命令来查看快照的状态:

GET /_snapshot/my_cos_backup/es_snapshot/_status

返回结果如下:(限于篇幅,具体索引的信息被省略)

{
    "snapshots" : [
        {
            "snapshot" : "es_snapshot",
            "repository" : "my_cos_backup",
            "uuid" : "vHIZketQRHm2j-6ZG_gW5w",
            "state" : "SUCCESS",
            "include_global_state" : true,
            "shards_stats" : {
                "initializing" : 0,
                "started" : 0,
                "finalizing" : 0,
                "done" : 32,
                "failed" : 0,
                "total" : 32
            },
            "stats" : {
                "incremental" : {
                    "file_count" : 601,
                    "size_in_bytes" : 389117626
                },
                "total" : {
                    "file_count" : 601,
                    "size_in_bytes" : 389117626
                },
                "start_time_in_millis" : 1596006911431,
                "time_in_millis" : 15012
            }
        }
    ]
}

从_status快照状态的返回结果中,我们看到"state" : "SUCCESS”,则表示快照是备份成功了。如果是”IN_PROCESS”则表明还在执行中。

下面我们到COS控制台的es目录下查看备份好的快照信息,索引的信息都存储在indices目录中。

查看cos中备份的snapshot
查看cos中备份的snapshot

进入indices目录:

bucket中的数据
bucket中的数据

可以看到北京集群中的快照都已经备份到北京地域的cos中了。

二、COS跨地域数据复制

上一步我们完成了源地域集群快照数据的备份,即将北京es集群中的索引快照数据都备份到了北京cos的bucket中。由于无法直接在目的端集群中进行恢复。因此需要先将北京cos中的数据复制到上海cos的bucket中。

1、目的端cos创建bucket

和上一步一样,在上海地域cos中创建一个bucket,名称叫wurong-es-snapshot-sh。

上海地域创建bucket
上海地域创建bucket

2、cos间数据复制

开始cos数据的同步复制迁移:将刚刚备份到北京cos桶下面的索引数据通过cos控制台提供的对象存储迁移功能,全量迁移到上海的桶中。这里我们选择根目录下的全量复制。

源端cos的信息
源端cos的信息
目的端cos信息
目的端cos信息

这里选择保存到根目录。点击确定后,数据开始迁移。

cos数据复制进度
cos数据复制进度

看到上面的进度显示数据全部迁移完成了。这时候我们到上海的bucket中查看数据是否已经同步过来了。

上海地域cos中创建bucket
上海地域cos中创建bucket

可以看到快照数据都已经全部从北京的cos桶中同步迁移过来了。

三、目的地域snapshot恢复

在上一步,我们完成了北京cos的索引快照数据复制到上海的cos bucket中。下面我们就将这些数据在上海的es集群中恢复过来。

1、目的端集群创建repository

在上海集群的kibana Dev Tools中同样执行创建仓库的命令:

PUT _snapshot/my_cos_backup
{
    "type": "cos",
    "settings": {
        "app_id": "1254139681",
        "access_key_id": “xxxx",
        "access_key_secret": “xxxx",
        "bucket": "wurong-es-snapshpt-sh",
        "region": "ap-shanghai",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "es/"
    }
}

注意,这里的bucket应该是在上海地域创建的bucket,即wurong-es-snapshot-sh。

region则是上海地域:ap-shanghai 。

在上海es集群中创建repository
在上海es集群中创建repository

同样,创建完成仓库后,可以使用下面命令查看:

GET _snapshot/my_cos_backup

2、目的端集群恢复snapshot

在恢复之前,我们可以先使用下面的命令查看该仓库下有哪些快照:

GET /_snapshot/my_cos_backup/es_snapshot

结果如下:

{
  "snapshots" : [
    {
      "snapshot" : "es_snapshot",
      "uuid" : "vHIZketQRHm2j-6ZG_gW5w",
      "version_id" : 7050199,
      "version" : "7.5.1",
      "indices" : [
        ".monitoring-kibana-7-2020.07.22",
        ".watcher-history-10-2020.07.26",
        ".monitoring-es-7-2020.07.27",
        ".monitoring-kibana-7-2020.07.28",
        ".watcher-history-10-2020.07.22",
        ".kibana_task_manager_1",
        ".monitoring-es-7-2020.07.23",
        ".monitoring-es-7-2020.07.26",
        ".monitoring-kibana-7-2020.07.24",
        ".monitoring-es-7-2020.07.29",
        ".watcher-history-10-2020.07.25",
        ".triggered_watches",
        ".watcher-history-10-2020.07.23",
        ".watcher-history-10-2020.07.24",
        ".monitoring-kibana-7-2020.07.25",
        ".watcher-history-10-2020.07.28",
        ".kibana_1",
        ".monitoring-es-7-2020.07.25",
        ".monitoring-es-7-2020.07.28",
        ".monitoring-kibana-7-2020.07.23",
        "wurong_bj_index",
        ".watcher-history-10-2020.07.27",
        ".apm-agent-configuration",
        ".monitoring-kibana-7-2020.07.27",
        ".watches",
        ".monitoring-es-7-2020.07.24",
        ".security-7",
        ".watcher-history-10-2020.07.29",
        ".monitoring-kibana-7-2020.07.29",
        ".monitoring-kibana-7-2020.07.26",
        ".monitoring-alerts-7",
        ".monitoring-es-7-2020.07.22"
      ],
      "include_global_state" : true,
      "state" : "SUCCESS",
      "start_time" : "2020-07-29T07:15:11.431Z",
      "start_time_in_millis" : 1596006911431,
      "end_time" : "2020-07-29T07:15:26.443Z",
      "end_time_in_millis" : 1596006926443,
      "duration_in_millis" : 15012,
      "failures" : [ ],
      "shards" : {
        "total" : 32,
        "failed" : 0,
        "successful" : 32
      }
    }
  ]
}

可以看到有一个名称为es_snapshot的快照,该快照下有32个索引。

我们可以将所有索引都恢复,也可以选择部分索引进行恢复。

下面我们恢复所有的快照数据:

POST /_snapshot/my_cos_backup/es_snapshot/_restore
{
  "indices": "wurong_bj_index",
  "ignore_unavailable": true,
  "include_global_state": false,
  "rename_replacement": "wurong_bj_index"
}

这里我们在命令后面加了wait_for_completion=true的参数,在上面我们执行备份的时候没有加,命令是立即返回,异步执行的。想要查看备份的状态,必须使用下面的_status命令进行查看。但是加了wait_for_completion=true,则表示该命令是同步执行的,直到恢复完成后才会返回(如果数据比较多,则不要加wait_for_completion=true参数)。

上面的是恢复所有的索引数据,通常会有一些系统索引已经存在,那就会出现异常的情况,我们也可以对部分特定索引进行恢复。命令如下:

POST /_snapshot/my_cos_backup/es_snapshot/_restore
{
  "indices": "wurong_bj_index",
  "ignore_unavailable": true,
  "include_global_state": false,
  "rename_replacement": "wurong_bj_index"
}

我们将北京es集群中的wurong_bj_index 索引单独恢复到上海es集群中。

使用如下命令查看该索引的恢复情况:

GET wurong_bj_index/_recovery

返回结果如下:

{
  "wurong_bj_index" : {
    "shards" : [
      {
        "id" : 0,
        "type" : "PEER",
        "stage" : "DONE",
        "primary" : false,
        "start_time_in_millis" : 1596009480330,
        "stop_time_in_millis" : 1596009480461,
        "total_time_in_millis" : 131,
        "source" : {
          "id" : "HSl4TLATR0KZgi-a7HcvOA",
          "host" : "10.111.45.14",
          "transport_address" : "10.111.45.14:22158",
          "ip" : "10.111.45.14",
          "name" : "1593570787000758032"
        },
        "target" : {
          "id" : "l1cioJZ7Qxik59S-wcrASQ",
          "host" : "10.111.0.24",
          "transport_address" : "10.111.0.24:20599",
          "ip" : "10.111.0.24",
          "name" : "1593570787000757832"
        },
        "index" : {
          "size" : {
            "total_in_bytes" : 3501,
            "reused_in_bytes" : 0,
            "recovered_in_bytes" : 3501,
            "percent" : "100.0%"
          },
          "files" : {
            "total" : 4,
            "reused" : 0,
            "recovered" : 4,
            "percent" : "100.0%"
          },
          "total_time_in_millis" : 60,
          "source_throttle_time_in_millis" : 0,
          "target_throttle_time_in_millis" : 0
        },
        "translog" : {
          "recovered" : 0,
          "total" : 0,
          "percent" : "100.0%",
          "total_on_start" : 0,
          "total_time_in_millis" : 55
        },
        "verify_index" : {
          "check_index_time_in_millis" : 0,
          "total_time_in_millis" : 0
        }
      },
      {
        "id" : 0,
        "type" : "PEER",
        "stage" : "DONE",
        "primary" : true,
        "start_time_in_millis" : 1596009480111,
        "stop_time_in_millis" : 1596009480265,
        "total_time_in_millis" : 153,
        "source" : {
          "id" : "7_w_IFMRRuOAd1QWuP-uiw",
          "host" : "10.111.45.2",
          "transport_address" : "10.111.45.2:20490",
          "ip" : "10.111.45.2",
          "name" : "1594025750002497732"
        },
        "target" : {
          "id" : "HSl4TLATR0KZgi-a7HcvOA",
          "host" : "10.111.45.14",
          "transport_address" : "10.111.45.14:22158",
          "ip" : "10.111.45.14",
          "name" : "1593570787000758032"
        },
        "index" : {
          "size" : {
            "total_in_bytes" : 3501,
            "reused_in_bytes" : 0,
            "recovered_in_bytes" : 3501,
            "percent" : "100.0%"
          },
          "files" : {
            "total" : 4,
            "reused" : 0,
            "recovered" : 4,
            "percent" : "100.0%"
          },
          "total_time_in_millis" : 58,
          "source_throttle_time_in_millis" : 0,
          "target_throttle_time_in_millis" : 0
        },
        "translog" : {
          "recovered" : 0,
          "total" : 0,
          "percent" : "100.0%",
          "total_on_start" : 0,
          "total_time_in_millis" : 59
        },
        "verify_index" : {
          "check_index_time_in_millis" : 0,
          "total_time_in_millis" : 0
        }
      }
    ]
  }
}

同样可以在上海es的kibana-Index Manager中查看该索引是否已经存在。

上海地域集群索引管理列表
上海地域集群索引管理列表

发现数据确实已经恢复过来了。到此,腾讯云ES集群通过COS备份恢复的方式进行跨地域数据迁移就结束了。

总结:

本文介绍了通过腾讯云cos和es自身提供的snapshot功能实现了跨地域的集群间数据备份与恢复,即通过snapshot方式的数据迁移。这种迁移方式使用于离线迁移,即源地域集群需要停止一段时间的写入。如果希望业务不停服平滑完成迁移。可以参考我的另外一篇文章自建ES集群迁移至腾讯云ES的几种方案介绍


最新活动

包含文章发布时段最新活动,前往ES产品介绍页,可查找ES当前活动统一入口

Elasticsearch Service自建迁移特惠政策>>

Elasticsearch Service 新用户特惠狂欢,最低4折首购优惠 >>

Elasticsearch Service 企业首购特惠,助力企业复工复产>>

关注“腾讯云大数据”公众号,技术交流、最新活动、服务专享一站Get~
关注“腾讯云大数据”公众号,技术交流、最新活动、服务专享一站Get~

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【腾讯云 Elasticsearch Service】高可用,可伸缩,云端全托管。集成X-Pack高级特性,适用日志分析/企业搜索/BI分析等场景
  • 一、源地域备份
    • 1、源地域cos中创建bucket
      • 2、源地域创建repository仓库
        • 3、源地域备份snapshot
        • 二、COS跨地域数据复制
          • 1、目的端cos创建bucket
            • 2、cos间数据复制
              • 三、目的地域snapshot恢复
                • 1、目的端集群创建repository
                  • 2、目的端集群恢复snapshot
                  • 总结:
                  • 最新活动
                  相关产品与服务
                  Elasticsearch Service
                  腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档