ElasticSearch数据迁移
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch数据迁移相关的知识,希望对你有一定的参考价值。
参考技术A 将es数据从一个集群迁移到另外一个集群,使用elasticdump进行迁移,elasticdump地址: https://github.com/elasticsearch-dump/elasticsearch-dump迁移单个索引:
参数说明:
--input: 源地址,可为ES集群URL、文件或stdin,可指定索引,格式为:protocol://host:port/index
--input-index: 源ES集群中的索引
--output: 目标地址,可为ES集群地址URL、文件或stdout,可指定索引,格式为:protocol://host:port/index
--output-index: 目标ES集群的索引
--type: 迁移类型,默认为data,表明只迁移数据,可选settings, analyzer, data, mapping, alias
--limit: 限制批量迁移数据条数(默认:100)
Elasticsearch 数据迁移
参考技术A 这里主要介绍的是基于 Linux(CentOS7) 系统,不同服务器集群之前的数据迁移。Elasticsearch 可以通过快照(snapshot)相关的命令对索引进行备份和恢复。(这个备份是增量的,同一个索引在第一次备份的基础上进行第二次备份只会备份新变化的数据)假定旧集群有三个节点,分别对应三台服务器: 192.168.1.10 、 192.168.1.11 、 192.168.1.12
在旧集群中指定 192.168.1.10 作为 NFS(Network File System)服务端,其它两台服务器作为 NFS 客户端,分别安装 NFS:
以下步骤只需要在 NFS 服务端执行。
创建数据共享目录,目录结构可以根据自己的实际情况修改:
修改配置文件:
相关参数的含义如下:
重启 NFS 服务端:
最后确保 NFS 保客户端能够访问 NFS 服务端的数据共享目录。
以下步骤需要在每台 NFS 客户端服务器执行。
在 NFS 客户端服务器创建数据挂载目录,这里方便起见,目录结构和 NFS 服务端共享目录一致:
将 NFS 服务端共享目录挂载到各个 NFS 客户端:
这样所有的 ES 节点就可以使用同一个数据共享目录。
在旧集群每个 ES 节点的 elasticsearch.yml 中,设置 ES 快照仓库目录为前边 NFS 配置的数据共享目录,也就是 ES 数据要备份到的目录:
修改完成后重启 ES 服务。
连接旧集群中某一个节点发送 PUT 请求来创建快照仓库,例如使用 192.168.1.10 节点,可以使用 Postman、Kibana 发送请求:
或者直接在对应节点的服务器上执行如下命令:
创建索引的快照就是对索引进行备份,如下发送一个 PUT 请求来生成 index_1 、 index_2 索引的快照:
或者:
可以在 NFS 的数据共享目录中( /opt/data/es_backup )得到最终生成的索引快照文件。
查看快照仓库的信息:
查看指定快照:
查看仓库中所有的快照信息:
删除指定快照:
删除快照仓库:
参考文章第一部分的内容,在新集群的服务器上搭建 NFS 环境。
给新集群每个 ES 节点配置快照仓库的目录,也就是新集群中的 NFS 数据共享目录:
连接新集群中某个 ES 节点发送 PUT 请求创建快照仓库,和之前的一样:
先将旧集群中生成的索引快照文件拷贝到新集群的快照仓库目录下。
再连接集群中的某 ES 个节点,发送 POST 请求从索引快照中恢复数据:
或者:
如果不要参数,则是恢复快照中的全部索引:
一般情况下,我们会结合索引的大小,在旧群集中生成指定索引的快照文件,然后拷贝到新集群的快照仓库来恢复索引数据,恢复完后就可以删除对应的索引快照文件(如果有需要的话也可以备份起来),重复这个步骤直到所有索引数据迁移而完毕。
如果集群中的数据量比较大,比如上百个G,整个迁移过程还是比较耗时的,耐心等待吧。
以上是关于ElasticSearch数据迁移的主要内容,如果未能解决你的问题,请参考以下文章
Beats:使用 Elastic Agent 来摄入数据并迁移定制的仪表盘
Enterprise:使用 Elastic Stack 8.2 中的 Elasticsearch API 来定位 App Search 中的文档
错误 [内部] 为 docker.elastic.co/elasticsearch/elasticsearch:7.12.0 加载元数据