#elasticdump迁移工具【适合小数据量】
1、安装node
#下载安装包
wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz
tar axf node-v16.14.0-linux-x64.tar.xz -C /usr/local/
mv /usr/local/node-v16.14.0-linux-x64 /usr/local/node
2、配置环境变量
vim /etc/profile
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
3、验证是否安装成功
source /etc/profile
node -v
npm -v
4、数据迁移
#迁移索引
elasticdump --input=http://es_user:密码@192.168.6.8:9200/myj/ --output=http://es_user:密码@192.168.6.9:9200/myj/ --type=mapping
#迁移数据
elasticdump --input=http://es_user:密码@192.168.6.8:9200/myj/ --output=http://es_user:密码@192.168.6.9:9200/myj/ --type=data --limit=2000 # 每次操作的objects数量,默认100,数据量大的话,可以调大加快迁移速度
4.1、同es 节点迁移数据到新索引【kibana上面操作】
POST _reindex?wait_for_completion=false #(加wait_for_completion=false会返回taskID,异步任务,可以用taskID查询任务进度,索引较大时用)
{
"source": {
"index": "myj"
},
"dest": {
"index": "customer"
}
}
GET _tasks/yKWF6mdXSKO5yiygjTn38g:8391454 #查询任务进度
5、备份数据
#导出索引和数据
elasticdump --input=http://es_user:密码@192.168.6.8:9200/myj/ --output=/home/myj_mapping.json --type=mapping
elasticdump --input=http://es_user:密码@192.168.6.8:9200/myj/ --output=/home/myj.json --type=data --limit=2000
#导入索引和数据
elasticdump --input=/home/myj_mapping.json --output=http://es_user:密码@192.168.6.9:9200/myj/ --type=mapping
elasticdump --input=/home/myj.json --output=http://es_user:密码@192.168.6.9:9200/myj/ --type=data --limit=2000
#ESM迁移工具【适合大数据量】
解析:esm迁移过程原理与elasticsearch-dump类似,区别在于esm使用go语言开发,号称每分钟可以迁移一千万条数据
下载地址:wget https://github.com/medcl/esm/releases/download/v0.7.0/esm-linux-amd64
1、数据迁移
授权:chmod +x esm-linux-amd64
./esm-linux-amd64 -s http://192.168.1.x.:9200 -m "账户:密码" -x "源索引名称" -d http://192.168.2.x:9200 -n "账户:密码" -y "目的索引名称" -c 10000 -w10 -b=20 -f --refresh
解析:
-s表示读取数据源SOURCE
-d表示将数据源传输到目的地DESTINATION。
-x表示需要复制的索引名称
-q表示指定条件的查询语句
-n表示base认证的用户名和密码
-w表示并发数,默认为1
-b表示buck大小,默认5MB
-f表示复制前删除已有重名索引
–refresh表示完成后再刷新索引
#reindex 数据迁移
说明:
1、elasticsearch集群间迁移数据。
2、索引分片分配不合理,例如数据量太大分片数太少,可通过reindex重建索引
3、索引中存在大量数据的情况下,需要修改索引mapping,可通过reindex复制索引数
步骤:
1、在目的端配置reindex白名单 elasticsearch.yml如下配置【集群,每个节点都需要配置】
#配置源端ES ip白名单迁移数据
reindex.remote.whitelist: "192.168.x.x:9200"
#容器部署ES部署配置环境变量
ES_SETTING_REINDEX_REMOTE_WHITELIST=192.168.x.x:9200
2、重启集群
3、创建索引结构
4、迁移数据
curl -ues_user:xxx -XPOST "http://10.103.x.x:9200/_reindex?wait_for_completion=false&slices=1" -H 'Content-Type: application/json' -d'
{
"source": {
"remote": {
"host": "http://192.168.x.x:9200",
"username": "elastic",
"password": "xxxxx"
},
"index": "member",
"size": 5000
},
"dest": {
"index": "member"
}
}'
5、查询异步任务
curl -uelastic:密码-XGET "http://10.103.x.x:9200/_tasks/nWX7rCa4RmicBK0p0opktQ:9478"
6、检查数据完整性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix