ELasticSearch数据迁移方案-elasticdump

前言

在企业实际生产环境中,避免不了要对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导入数据。
  3. 在数据迁移的时候,目标库的连接信息有时需要加单引号(列如:--output='http://账号:密码@192.168.1.144:9201/app_burying_log_2024-01-17' ),有时不需要加单引号(例如:--output=http://账号:密码@192.168.1.144:9201/app_burying_log_2024-01-17
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA菜鸟程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值