实际使用Elasticdump工具对Elasticsearch进行备份和数据还原

最近在开发当中做了一些涉及到Elasticsearch映射结构及数据导出导入的工作,怕以后会把这过程忘记,可谓好记性不如烂笔头,故而记录成一篇博文。

Elasticsearch的童鞋大概都会遇到这样一个问题,如何快速地将Elasticsearch里的索引结构映射和对应数据快速地进行备份和数据还原。

这时,就可以通过Elasticsearch的导入导出工具Elasticdump来实现,可以将Elasticsearch不同集群的数据进行索引备份和还原。


一、Elasticdump工具介绍

在npm关于Elasticdump的英文官网里,可以看到一篇关于Elasticdump的英文介绍,这个工具的logo很有意思,是一台可以搬运(迁移)东西(数据)的工具车,这个logo就表明该Elasticdump工具可用来迁移备份和恢复数据。

image

使用Elasticdump时特别需要是,若直接用npm install elasticdump -g来按照,node版本需要在v10.0.0以上才能支持,否则执行该指令会出错。

Elasticdump通过向发送一个input来工作output,其标准指令是

elasticdump --input SOURCE --output DESTINATION [OPTIONS]

input SOURCE表示读取数据源SOURCE

output DESTINATION表示将数据源传输到目的地DESTINATION。

SOURCE/DESTINATION两者都可以是Elasticsearch URL或文件,如果是Elasticsearch URL,例如,就意味着是直接往地址为库里导入或者从其导出索引相关数据。

[OPTIONS]是操作选项,比较常用有type和limit,其他操作这里就不展开介绍。

type是ES数据导出导入类型,Elasticdum工具支持以下数据类型的导入导出——

type类型 说明
mapping   ES的索引映射结构数据  
data   ES的数据  
settings   ES的索引库默认配置  
analyzer   ES的分词器  
template   ES的模板结构数据  
alias   ES的索引别名  

limit从SOURCE备份到DESTINATION的对象数量,默认是100,可自定义设置。


二、Elasticdump工具安装

1. 在线安装Elasticdum工具需要依赖node,故而先安装v10.0.0以上的node。

[root@zhu opt]# wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz [root@zhu opt]# tar xvf node-v12.18.3-linux-x64.tar.xz -C /usr/local/ [root@zhu opt]# mv /usr/local/node-v12.18.3-linux-x64 /usr/local/nodejs [root@zhu opt]# echo export NODEJS_HOME=http://www.likecs.com/usr/local/nodejs >> /etc/profile [root@zhu opt]# echo export PATH=$PATH:$NODEJS_HOME/bin >> /etc/profile [root@zhu opt]# echo export NODEJS_PATH=$NODEJS_HOME/lib/node_modules >>/etc/profile [root@zhu opt]# source /etc/profile [root@zhu opt]# ln -s /usr/local/nodejs/bin/node /usr/local/bin/node [root@zhu opt]# ln -s /usr/local/nodejs/bin/npm /usr/local/bin/npm [root@zhu opt]# npm -v 6.14.6 [root@zhu opt]# node -v v12.18.3

2. 通过npm安装elasticdump

[root@zhu opt]# npm install elasticdump -g

安装成功后,进入到

[root@zhu opt]#cd /usr/local/nodejs/lib/node_modules/elasticdump/bin

可以看到有两个命令,elasticdump用来备份单个索引,multielasticdump可以用来并行备份多个索引:

root@zhu bin]# ll 总用量 20 -rwxr-xr-x. 1 1001 1001 4026 4月 9 14:38 elasticdump -rwxr-xr-x. 1 1001 1001 14598 10月 26 1985 multielasticdump
三、Elasticdump工具使用

使用elasticdump进行单个索引备份还原操作——


- 导出索引test_event的mapping映射结构:

[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event --output=http://www.likecs.com/opt/test_event_mapping.json --type=mapping

检查当前,发现已经备份成json文件:

[root@zhu opt]# ll 总用量 14368 -rw-r--r--. 1 root root 6200 4月 9 11:30 ucas_hisevenr_mapping.json

还可以直接导入到另一个es集群当中:

[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event --output=http://127.0.0.2:9200/test_event --type=mapping

- 导出索引test_event的数据:

[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event --output=http://www.likecs.com/opt/data.json --type=data

同理,可直接将备份数据导入另一个es集群:

[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event --output=http://127.0.0.2:9200/test_event --type=data

elasticdump进行数据还原操作

- mapping映射结构还原:

[root@zhu opt]# elasticdump --input=http://www.likecs.com/opt/test_event_mapping.json --output :9200/ --type=mapping

- data数据还原

[root@zhu opt]# elasticdump --input=http://www.likecs.com/opt/data.json --output=http://127.0.0.1:9200/test_event --type=data

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxpjx.html