工具简介
1.概念:
- elasticdump是实现不同ElasticSearch集群之间索引迁移的工具。
2.优势:
- 低成本实现备份与恢复到本地
- 可以实现跨集群,跨账号恢复与备份
- 安装快捷,使用简单
准备工作
1.创建阿里云ECS实例
2.创建ES集群,本文创建使用的都是杭州地域,同一VPC下的资源
注意: 如果需要内网访问的话需要保证VPC一致并配置白名单,本文创建使用的虽然都是杭州地域,同一VPC下的资源, 但是以公网访问ES为例介绍elasticdump的使用
3.安装nodejs
- 离线下载: 推荐下载后再上传比较快捷, 本文由于linux是64位使用 node-v12.18.4-linux-x64.tar.xz
各个系统下载地址: https://nodejs.org/download/release/v12.18.4/
- 在线下载
wget https://nodejs.org/dist/v12.18.4/node-v12.18.4-linux-x64.tar.xz
无论哪种方式下载, 安装步骤如下
1.移动上传的node-v12.18.4-linux-x64.tar.xz文件到/usr/local目录下,并解压 tar -xvf node-v12.18.4-linux-x64.tar.xz2.改名整个目录为 nodejs mv node-v12.18.4-linux-x64 nodejs 3.创建软连接,使其全局生效 ln -s /usr/local/nodejs/bin/node /usr/local/bin ln -s /usr/local/nodejs/bin/npm /usr/local/bin 4.验证是否安装成功 node -v npm -v
实际操作如下可以参考
4.安装 elasticdump
本次选择本地安装的方式 npm install elasticdump 官网地址: https://github.com/elasticsearch-dump/elasticsearch-dump (如果想快速使用请往下看离线安装)
本地安装 npm install elasticdump ./bin/elasticdump 全局安装 npm install elasticdump -g elasticdump 如果出现安装失败可以先指定版本升级npm npm install -g npm@8.5.3
5.查询elasticdump安装目录
回到根目录,执行如下命令查询安装的elasticdump所在目录
find ./ -name'elasticdump'-print
6.离线安装
我觉得下载太慢,于是直接下载了ZIP包📎elasticsearch-dump-6.68.0.zip 上传到自建的目录中解压使用
数据备份
1.准备ES数据
PUT heqiang_source POST /heqiang_source/_mapping { "properties": { "name": { "analyzer": "ik_max_word", "search_analyzer": "ik_smart", "type": "text" }, "age": { "type": "keyword" }, "description": { "analyzer": "ik_max_word", "search_analyzer": "ik_smart", "type": "text" } } } POST /heqiang_source/_doc/1 { "name":"张三", "age":"21", "description": "他本是富家子弟,却从小勤奋刻苦,有资本又那么努力怎能不优秀呢"} POST /heqiang_source/_doc/2 { "name":"李四", "age":"22", "description": "他一身手艺,勤劳朴实,是一位朴实的农民"} GET heqiang_source/_search
2.执行后可以在kibana查询验证下数据
3.执行命令备份到本地
通过公网访问ES集群(开启白名单),进入上面的安装的bin目录,执行如下命令导出数据(test.json文件会自动创建)
注意事项
- 一定要进入bin目录下执行脚本,下面案例都是如此
- 一定要添加ECS的IP到ES的白名单(这里使用的公网IP,添加公网IP地址即可)
- --input或者--output可以等号连接后面的参数
- 如果执行下面脚本提示文件不可执行 可以先执行命令 chmod +x elasticdump
# 导出索引Mapping数据./elasticdump --input http://elastic:密码@es-cn-7p*********02l0xw.public.elasticsearch.aliyuncs.com:9200/heqiang_source --output ./heqiang_source_mapping.json --type=mapping # 导出索引数据(默认不配置type就是导出数据)./elasticdump --input http://elastic:密码@es-cn-7p*********02l0xw.public.elasticsearch.aliyuncs.com:9200/heqiang_source --output ./heqiang_source.json --type=data
查询验证导出的内容 命令: cat 文件名称
数据恢复
1.执行命令恢复到集群
# Mapping 数据导入至索引./elasticdump --output http://elastic:密码@es-cn-7p*********02l0xw.public.elasticsearch.aliyuncs.com:9200/heqiang_source_back --input ./heqiang_source_mapping.json --type=mapping # ES文档数据导入至索引./elasticdump --output http://elastic:密码@es-cn-7p*********02l0xw.public.elasticsearch.aliyuncs.com:9200/heqiang_source_back --input ./heqiang_source.json --type=data
2.查询恢复的索引是否存在