自建ES通过OSS快照迁移至阿里云ES

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: 在同一个VPC内使用3台ECS部署自建ES集群,可以通过给自建Elasticsearch打快照存储到OSS,在利用OSS中的快照进行数据库恢复,将自建Elasticsearch迁移至阿里云Elasticsearch。

在同一个VPC内使用3台ECS部署自建ES集群,可以通过给自建Elasticsearch打快照存储到OSS,在利用OSS中的快照进行数据库恢复,将自建Elasticsearch迁移至阿里云Elasticsearch。
TIM_20180411231841

安装OSS快照仓库插件,下载插件并解压到ES集群各节点Elasticsearch根目录下的plugins目录

# wget https://github.com/zhichen/elasticsearch-repository-oss/releases/download/v5.5.3/elasticsearch-repository-oss-5.5.3.zip
# unzip elasticsearch-repository-oss-5.5.3.zip -d /srv/elasticsearch-5.4.3/plugins/

修改配置文件中的版本号为当前ES集群的版本,完成后需要重启ES各节点。

# cat /srv/elasticsearch-5.4.3/plugins/elasticsearch/plugin-descriptor.properties |grep version |grep -v "^#"
version=5.4.3
java.version=1.8
elasticsearch.version=5.4.3

新购与自建ES集群在同一个region的标准存储类型OSS,(阿里云暂不支持归档存储类型OSS)。

在自建ES上创建仓库,OSS所属阿里云主账号AK信息,若使用子账号需要有管理OSS的权限。

PUT _snapshot/robin_backup
{
    "type": "oss",
    "settings": {
        "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", 
        "access_key_id": "Lxxxxxxxxxa",
        "secret_access_key": "Nxxxxxxxxxxxxxxxxxxpt",
        "bucket": "shasengtest", 
        "compress": true
    }
}

可以根据实际情况在setting中增加设置

        "chunk_size": "500mb", #限制snapshot过程中分块的大小,超过这个大小,数据将会被分块上传到OSS中
        "base_path": "snapshot/" #设置仓库的起始位置,默认为根目录

获取全部仓库信息,设置了robin_backup及robin_backup2两个仓库

# curl -XGET es1:9001/_snapshot/?pretty
{
  "robin_backup" : {
    "type" : "oss",
    "settings" : {
      "bucket" : "shasengtest",
      "compress" : "true",
      "endpoint" : "http://oss-cn-hangzhou-internal.aliyuncs.com"
    }
  },
  "robin_backup2" : {
    "type" : "oss",
    "settings" : {
      "bucket" : "robin7",
      "compress" : "true",
      "endpoint" : "http://oss-cn-hangzhou-internal.aliyuncs.com"
    }
  }
}

删除仓库

DELETE _snapshot/robin_backup1

获取指定仓库信息

# curl -XGET es1:9001/_snapshot/robin_backup?pretty
{
  "robin_backup" : {
    "type" : "oss",
    "settings" : {
      "bucket" : "shasengtest",
      "compress" : "true",
      "endpoint" : "http://oss-cn-hangzhou-internal.aliyuncs.com"
    }
  }
}

备份当前自建ES集群所有打开的索引到指定仓库,创建快照并命名为test

PUT _snapshot/robin_backup/test

获得test快照信息,可以看到备份了当前集群全部的索引test,test1,.kibana

# curl -XGET es1:9001/_snapshot/robin_backup/test?pretty
{
  "snapshots" : [
    {
      "snapshot" : "test",
      "uuid" : "oXtFY174RyeKRgYFi_dXKA",
      "version_id" : 5040399,
      "version" : "5.4.3",
      "indices" : [
        "test",
        "test1",
        ".kibana"
      ],
      "state" : "SUCCESS",
      "start_time" : "2018-04-10T12:44:26.027Z",
      "start_time_in_millis" : 1523364266027,
      "end_time" : "2018-04-10T12:44:27.204Z",
      "end_time_in_millis" : 1523364267204,
      "duration_in_millis" : 1177,
      "failures" : [ ],
      "shards" : {
        "total" : 11,
        "failed" : 0,
        "successful" : 11
      }
    }
  ]
}

备份指定test2索引到robin_backup下并命名快照为test2

PUT _snapshot/robin_backup/test2
{
  "indices": "test2"
}

获得单个快照test2信息,指包含了test2这一个索引

# curl -XGET es1:9001/_snapshot/robin_backup/test2?pretty
{
  "snapshots" : [
    {
      "snapshot" : "test2",
      "uuid" : "L6MknW92RGe55fZS1HIVUw",
      "version_id" : 5040399,
      "version" : "5.4.3",
      "indices" : [
        "test2"
      ],
      "state" : "SUCCESS",
      "start_time" : "2018-04-10T12:47:19.430Z",
      "start_time_in_millis" : 1523364439430,
      "end_time" : "2018-04-10T12:47:20.099Z",
      "end_time_in_millis" : 1523364440099,
      "duration_in_millis" : 669,
      "failures" : [ ],
      "shards" : {
        "total" : 5,
        "failed" : 0,
        "successful" : 5
      }
    }
  ]
}

删除索引test及test1,并关闭索引.kibana

# curl -XDELETE es2:9001/test
{"acknowledged":true}
# curl -XDELETE es2:9001/test1
{"acknowledged":true}
# curl -XPOST es2:9001/.kibana/_close
{"acknowledged":true}
# curl -XGET es2:9001/_cat/indices
green open  test3   YcU56zKqTNaTNH8Vcr6jpw 5 1 168 0 395.8kb 217.5kb
green open  test2   M-kOMZVkRcWwOwQlFRKRWw 5 1 139 0 343.1kb 171.5kb
      close .kibana Lcv2WmUPTxqPjoNJV2C7sQ                          

elasticsearch的索引快照与ECS快照不同,并不是打快照那一时刻的整个集群状态。这里可以把索引理解成ECS下挂载的数据盘之一,只需要对重要的数据盘打快照,并不是所有的磁盘都需要打快照,恢复时可以选择只恢复某一块盘的数据,而不是对所有的磁盘进行回滚。

从test快照恢复索引

# curl -XPOST es1:9001/_snapshot/robin_backup/test/_restore
{"accepted":true}

查看恢复效果

# curl -XGET es2:9001/_cat/indices
green open test    fEukT7eWQ-OjD3uzxKmXcg 5 1 211 0 507.6kb 253.8kb
green open test1   mw6MvvuZSlys0YLjo-UU-Q 5 1 277 0 611.3kb 305.6kb
green open .kibana Lcv2WmUPTxqPjoNJV2C7sQ 1 1   2 0  15.4kb   7.7kb
green open test3   YcU56zKqTNaTNH8Vcr6jpw 5 1 168 0 395.8kb 217.5kb
green open test2   M-kOMZVkRcWwOwQlFRKRWw 5 1 139 0 343.1kb 171.5kb

也可以安装cerebro插件查看已存在的索引快照,单击restore即可恢复索引。
cerebro

也可以选择只恢复部分索引

# curl -XPOST es1:9001/_snapshot/robin_backup/test/_restore
{
    "indices": "test1", #指定需要恢复的索引名称
}

在阿里云ES上创建相同的快照仓库,与自建的ES集群共享同一个oss仓库,完成后即可查看到快照信息
snapshot

查看当前阿里云ES集群的索引
snapshot2

在阿里云ES上恢复快照,可以看到已经恢复的test和test1
snapshot3

由于阿里云ES存在.kibana索引,恢复快照时需要先关闭.kibana索引,否则会报错

{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_restore_exception",
        "reason": "[robin_backup:test/oXtFY174RyeKRgYFi_dXKA] cannot restore index [.kibana] because it's open"
      }
    ],
    "type": "snapshot_restore_exception",
    "reason": "[robin_backup:test/oXtFY174RyeKRgYFi_dXKA] cannot restore index [.kibana] because it's open"
  },
  "status": 500
}
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
1月前
|
Java API 开发工具
如何用阿里云 oss 下载文件
阿里云对象存储服务(OSS)提供了多种方式下载文件,以下讲解下各种方式的下载方法
749 1
|
27天前
|
存储 安全 对象存储
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
本文详细介绍了怎样帮助新手小白从注册,购买阿里云OSS,到一步一步配置OSS做为图床,和PicGo、Typora软件连接,配置好关联之后,在使用Typora写文章时,如果需要插入图片,只需要将图片复制粘贴到Typora的编辑区域,就会自动通过PicGo上传到指定图床,自动复制外网能访问的URL并展示,简直不要太方便,极大的解决了编辑文章时复制处理图片链接的痛点。
147 2
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
|
30天前
|
弹性计算 前端开发 小程序
微信小程序上传文件至阿里云OSS直传(java后端签名+前端直传)
当前的通用文件上传方式是通过前端上传到服务器,再由服务器转存至对象存储。这种方式在处理小文件时效率尚可,但大文件上传因受限于服务器带宽,速度较慢。例如,一个100MB的文件在5Mbps带宽的阿里云ECS上上传至服务器需160秒。为解决此问题,可以采用后端签名的方式,使微信小程序直接上传文件到阿里云OSS,绕过服务器中转。具体操作包括在JAVA后端引入相关依赖,生成签名,并在微信小程序前端使用这个签名进行文件上传,注意设置正确的请求头和formData参数。这样能提高大文件上传的速度。
|
3天前
|
存储 Java API
阿里云oss简介和使用流程
本文档介绍了如何准备阿里云OSS(对象存储服务)并开始使用它。首先,需要注册阿里云账号并进行实名认证,然后购买OSS资源包。在阿里云控制台中,可以创建和管理OSS存储空间(称为“Bucket”)。接着,文章简要介绍了阿里云OSS,它是一个基于云端的对象存储服务,提供高可靠性、高性能、低成本和易于使用的特性。 在阿里云OSS控制台,用户可以进行文件的上传和下载操作。通过API,开发者可以使用各种编程语言(如Java)来创建、删除Bucket以及上传、下载和删除文件。例如,Java代码示例展示了如何创建Bucket、上传文件、删除文件以及下载文件到本地的操作。
|
10天前
|
开发工具 对象存储
阿里云OSS文件上传
阿里云OSS文件上传
51 0
|
10天前
|
存储 缓存 Java
阿里云OSS实战从入门到大神
说起阿里云OSS,那作用和功能都是非常强大的,它可以存放图片,音频,视频等资源文件,这些资源文件,你不必存放到服务器的硬盘里,这样既可以节省服务器硬盘空间,又可以降低服务器的读写压力,非常适合大并发的架构。
51 0
|
27天前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
29天前
|
关系型数据库 MySQL 数据库
使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
【2月更文挑战第29天】使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
216 2
|
24天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
28天前
|
存储 分布式计算 网络协议
阿里云服务器内存型r7、r8a、r8y实例区别参考
在阿里云目前的活动中,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y这几个实例规格,相比于活动内的经济型e、通用算力型u1实例来说,这些实例规格等性能更强,与计算型和通用型相比,它的内存更大,因此这些内存型实例规格主要适用于数据库、中间件和数据分析与挖掘,Hadoop、Spark集群等场景,本文为大家介绍内存型r7、r8a、r8y实例区别及最新活动价格,以供参考。
阿里云服务器内存型r7、r8a、r8y实例区别参考