ES数据的备份、恢复、迁移-elasticdump工具
Elasticdump 是一个用于 Elasticsearch 的数据导入和导出工具,非常适合于数据备份、还原以及在 Elasticsearch 集群之间迁移数据。
1.elasticdump安装包下载
下载地址
https://github.com/elasticsearch-dump/elasticsearch-dump/tags
选择合适的版本进行下载即可
这里安装的版本是6.111.0
2.安装node.js
elasticdump的运行需要依赖node.js,因此,需要事先安装node.js,有两种方式,yum和源码安装
yum安装
- ]# yum -y install nodejs npm
源码安装
源码包下载地址:https://nodejs.org/zh-cn/download/source-code
根据需要下载合对应的版本
更新 C++ 编译器,更新到10.1.0版本
- ]# yum -y install yum install centos-release-scl
- ]# yum -y install centos-release-scl
- ]# yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++
进行源码编译安装
- ]# ./configure --prefix=/usr/local/node
- ]# make && make install
安装所有模块
- ]# npm install
设置环境变量
- ]# echo 'export PATH=/usr/local/node/bin/:$PATH' >> /etc/profile
- ]# source /etc/profile
查看node版本
3.解压elasticdump安装包
安装路径:/opt
- ]# cd /opt
- ]# tar xvf elasticsearch-dump-6.111.0.tar.gz
- ]# mv elasticsearch-dump-6.111.0 esdump
4.导出/导入es索引数据
导出数据到本地目录,再导入到目标ES节点中
索引名称:logstash-dev-2024.10.03
导出索引数据到本地文件中,名称"index_data.json"
- ]# cd /opt/esdump/data
- ]# /opt/esdump/bin/elasticdump \
- > --input=http://esuser:es123@172.25.230.47:19201/logstash-dev-2024.10.03 \
- > --output=index_data.json \
- > --type=data
--input 要导出索引的url地址,172.25.230.47:19201/logstash-dev-2024.10.03是索引地址,"esuser:es123"是es的账号:密码
--output 指定备份文件存放路径,这里指定为当前路径的index_data.json文件
--type 指定导出的数据类型,这里设置为data
data: 用于导出或导入索引中的数据(documents)
mapping: 用于导出或导入索引的映射(schema)。
settings: 用于导出或导入索引的设置。
导出成功
导出索引映射到本地文件中,名称"index_mapping.json"
- ]# /opt/esdump/bin/elasticdump \ index_mapping.json
- > --input=http://elastic:elk@123@172.25.230.47:19201/logstash-dev-2024.10.03 \
- > --output=index_mapping.json \
- > --type=mapping
导出的索引数据文件和映射文件
导入索引映射到目标ES节点中
- ]# /opt/esdump/bin/elasticdump \
- > --input=index_mapping.json \
- > --output=http://172.25.230.52:19200/logstash-dev-2024.10.03 \
- > --type=mapping
--input是导出的在本地的索引映射文件路径,--output是要导入的ES节点的远程路径
导入索引数据到目标ES节点中
- ]# /opt/esdump/bin/elasticdump \
- > --input=index_data.json \
- > --output=http://172.25.230.52:19200/logstash-dev-2024.10.03 \
- > --type=data
--input是导出的在本地的索引数据文件路径,--output是要导入的ES节点的远程路径
查看导入的索引"logstash-dev-2024.10.03"以及数据情况
直接从源ES节点,导入到目标ES节点
索引名称:logstash-dev-2024.10.01
导入索引映射
- ]# /opt/esdump/bin/elasticdump \
- > --input=http://esuser:es123@172.25.230.47:19201/logstash-dev-2024.10.01 \
- > --output=http://172.25.230.52:19200/logstash-dev-2024.10.01 \
- > --type=mapping
导入索引数据
- ]# /opt/esdump/bin/elasticdump \
- --input=http://esuser:es123@172.25.230.47:19201/logstash-dev-2024.10.01 \
- --output=http://172.25.230.52:19200/logstash-dev-2024.10.01 \
- --type=data
查看导入的索引"logstash-dev-2024.10.01"以及数据情况
5.docker操作elasticdump
下载elasticdump的docker镜像
- ]# docker pull elasticdump/elasticsearch-dump
导出索引映射
- ]# docker run -d --rm \
- --name elastic-dump \ ##容器名称
- -v ./:/data \ ##将容器中的/data目录映射到本机的当前目录下
- elasticdump/elasticsearch-dump \
- --input=http://esuser:elk@123@172.25.230.47:19201/logstash-dev-2024.09.30 \ ##索引名称
- --output=/data/logstash-dev-2024.09.30_mapping.json \ ##索引映射文件导出存放的路径
- --type=mapping
导出索引数据
- ]# docker run -d --rm \
- --name elastic-dump \
- -v ./:/data \
- elasticdump/elasticsearch-dump \
- --input=http://elastic:es123@172.25.230.47:19201/logstash-dev-2024.09.30 \
- --output=/data/logstash-dev-2024.09.30_data.json \
- --type=data
导入索引映射
- ]# docker run -d --rm \
- --name elastic-dump \
- -v ./:/data \
- elasticdump/elasticsearch-dump \
- --input=/data/logstash-dev-2024.09.30_mapping.json \
- --output=http://172.25.230.52:19200/logstash-dev-2024.09.30 \
- --type=mapping
导入索引数据
- ]# docker run -d --rm \
- --name elastic-dump \
- -v ./:/data \
- elasticdump/elasticsearch-dump \
- --input=/data/logstash-dev-2024.09.30_data.json \
- --output=http://172.25.230.52:19200/logstash-dev-2024.09.30 \
- --type=data
查看数据导入/导出状态
- ]# docker logs -f elastic-dump
elasticdump参数解释
参数 | 说明 |
--input | 指定输入源。可以是Elasticsearch的URL,文件路径或stdin。 |
--output | 指定输出目的地。可以是Elasticsearch的URL,文件路径或stdout。 |
--type | 指定要导出或导入的数据类型(data, analyzer, mapping, settings) |
--searchBody | 查询Elasticsearch,只导出匹配的文档。 |
--sourceOnly | 仅导出指定的索引。 |
--limit | 每次请求获取的文档数量。 |
--size | Elasticsearch查询的大小。 |
--all | 导出所有索引。 |
--delete | 在导入之前删除输出目标中的数据。 |
--transform | 对导出的数据进行转换。 |
--headers | 添加自定义HTTP头。 |
--timeout | 超时时间(毫秒)。 |
--debug | 打印调试信息。 |
--scrollTime | 设置Elasticsearch的scroll时间。 |
--maxSockets | 最大套接字数量。 |
--offset | 从指定偏移量开始导出。 |
--input-index | 指定输入的索引名。 |
--output-index | 指定输出的索引名。 |
--input-aws-accessKeyId | AWS访问密钥ID(用于S3)。 |
--input-aws-secretAccessKey | AWS秘密访问密钥(用于S3)。 |
--input-aws-region | AWS区域(用于S3)。 |