关于ElasticSearch数据导出的一次实践
作者:FancyPig | 发布时间: | 更新时间:
关于ElasticSearch数据迁移/数据导出的一次实践经历
问题场景
最近需要到客户现场将ElasticSearch中的数据导出,然后做大数据样本分析,这里我一开始想的是通过Docker部署dejavu面板,然后进行导出
上面部署docker虽然非常简单,但是最核心的是需要联网,很多客户都是在内网的环境中部署了设备,因此这个方案并不通用,因此笔者决定想一种古老的方式……那就是把数据节点相关文件拷贝出来,然后再拿回到自己电脑里导入恢复数据。
ElasticSearch部署
这里首先要部署和客户环境相同的ElasticSearch版本,我这里是用Ubuntu20.04虚拟机部署的ElasticSearch7.9.2
环境
Ubuntu20.04
下载
下载elasticsearch-7.9.2-linux-x86_64.tar.gz安装包,如果你想安装其他版本,可以访问官网
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz
解压缩elasticsearch-7.9.2-linux-x86_64.tar.gz文件
tar -zxvf elasticsearch-7.9.2-linux-x86_64.tar.gz
切换到bin目录并启动ElasticSearch
./elasticsearch

启动
这里发现启动的时候报错了,不能使用root账户启动

这里添加一个用户,比方说es
adduser es
chown -R es /home/fancypig/elasticsearch-7.9.2/
小插曲:如果你没有给新建的用户添加权限(即上面代码的第二行如果没有执行),将会出现如下报错
could not find java in bundled jdk at /home/fancypig/elasticsearch-7.9.2/jdk/bin/java
验证启动是否成功
这里可以通过访问9200端口来进行验证
curl 127.0.0.1:9200

这里发现已经连上了
数据拷贝
这里,需要根据客户具体环境先找到elasticsearch.yml配置文件位置
find . -name elasticsearch.yml
小技巧:如果你想在linux系统里查找以XXX开头的任意文件或者文件夹,可以输入下面的命令
find . -name XXX\*
找到配置文件的位置后,我们读取看下data存在哪里了
然后就是把这两个目录的文件拷贝出来就行了

将客户的这些数据资料拷贝到自己的Ubuntu虚拟机相关data、log路径下
之后就是一顿操作,开始恢复数据咯!后续继续补充