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)。 |