ELasticSearch数据迁移方案-elasticdump

ELasticSearch数据迁移方案-elasticdump

码农世界 2024-06-19 后端 82 次浏览 0个评论
前言

在企业实际生产环境中,避免不了要对es集群进行迁移、数据备份与恢复,以此来确保数据的可用性及完整性。因此,就涉及到了数据备份与恢复。本章主要以elasticdump工具为主,来迁移数据;如果按照索引来迁移的话,我们的数据量不算大,可以先将历史数据先迁移;实时写入的数据可以按照某个时间点来先迁移一部分;新增的数据再通过这个时间点来同步增量数据即可。

一、ElasticDump安装
1.1、使用 nvm 安装 Node.js和ElasticDump

nvm(Node Version Manager)是一个用于管理多个 Node.js 版本的工具,可以帮助你轻松安装和切换不同版本的 Node.js 和 npm。

1)安装 nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
source ~/.bashrc

 2)安装最新的 Node.js LTS 版本

nvm install --lts
nvm use --lts

3)确认 Node.js 和 npm 已升级

node -v
npm -v

4)安装 ElasticDump

npm install -g elasticdump

5)确认 ElasticDump 安装成功

elasticdump --version
1.2、使用二进制文件方式安装nodejs和ElasticDump
# 下载Node.js的二进制版本
wget https://nodejs.org/dist/v14.17.0/node-v14.17.0-linux-x64.tar.xz
# 解压并移动到合适的位置
tar -xf node-v14.17.0-linux-x64.tar.xz
sudo mv node-v14.17.0-linux-x64 /usr/local/node
# 设置环境变量
export PATH=/usr/local/node/bin:$PATH
# 验证Node.js版本
node -v
安装 ElasticDump
npm install -g elasticdump
elasticdump --version
二、ElasticSearch相关用法
--查询ES的监控状态
curl http://localhost:9201/_cat/health?v -u 账号:密码
--查询ES的索引
curl http://localhost:9201/_cat/indices?v -u 账号:密码
--删除索引
curl -XDELETE http://localhost:9201/commu_log_2024-05-30 -u 账号:密码
--查询索引的mapping
curl --location --request GET 'http://localhost:9201/commu_log_2024-05-11/_mapping?pretty' -u 账号:密码
--查询索引的settings
curl --location --request GET 'http://localhost:9201/commu_log_2024-05-11/_settings?pretty' -u 账号:密码
--查询索引数据
curl --location --request GET 'http://localhost:9201/commu_log_2024-05-11/_search?pretty' -u 账号:密码
三、Elasticdump的用法
3.1、备份数据
--正常情况下:
elasticdump --limit=10000 --input=http://账号:密码@localhost:9201/commu_log_2024-05-11 --output=/home/elaticdumptemp/commu_log_2024-05-11.json --type=data
--有特殊字符需要转义下:当账号和密码中有特殊字符时,需要转义,且input后面的参数需要用''括起来
elasticdump --limit=10000 --input='http://账号:密码@localhost:9201/commu_log_2024-05-11' --output=/home/elaticdumptemp/commu_log_2024-05-11.json --type=data
--带条件的查询:在备份数据时,可以使用带条件的语句来过于一部分数据
elasticdump --limit=10000 --input='http://账号:密码@localhost:9201/login_log' --output=/home/elaticdumptemp/login_log.json --type=data --searchBody '{"query": {"range": {"loginDatetime": {"gte": "1672220258625","lte": "1672229467106"}}}}'
3.2、数据迁移
--迁移分词器
elasticdump --limit=10000 --input=http://账号:密码@localhost:9200/commu_log_2024-06-03 --output='http://账号:密码@119.23.55.144:9201/commu_log_2024-06-03' --type=analyzer
--迁移映射
elasticdump --limit=10000 --input=http://账号:密码@localhost:9200/commu_log_2024-06-03 --output='http://账号:密码@192.168.1.144:9201/commu_log_2024-06-03' --type=mapping
--迁移数据
elasticdump --limit=10000 --input=http://账号:密码@localhost:9200/commu_log_2024-06-03 --output='http://账号:密码@192.168.1.144:9201/commu_log_2024-06-03' --type=data
--带条件的数据迁移:如果索引中有时间字段,可以用于增量数据的迁移
elasticdump --limit=10000 --input='http://账号:密码@localhost:9200/app_burying_log_2024-01-17' --output='http://账号:密码@192.168.1.144:9201/app_burying_log_2024-01-17' --type=mapping --searchBody '{"query": {"range": {"time": {"lte": "1705464000000"}}}}'

参数解释:

--limit:表示每次迁移的数据量

--input:数据源

--output:目的地

--type:迁移的数据类型

注意:

  1. 在实际验证中,其实不用迁移分词器和映射,只需要迁移data数据即可。
  2. 新的ELasticSearch服务中需要先新建索引,然后才能通过elasticdump导入数据。

转载请注明来自码农世界,本文标题:《ELasticSearch数据迁移方案-elasticdump》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,82人围观)参与讨论

还没有评论,来说两句吧...

Top