前言
在企业实际生产环境中,避免不了要对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:迁移的数据类型
注意:
- 在实际验证中,其实不用迁移分词器和映射,只需要迁移data数据即可。
- 新的ELasticSearch服务中需要先新建索引,然后才能通过elasticdump导入数据。
还没有评论,来说两句吧...