#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 "账户:密码" -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:30159"
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:30159",
"username": "elastic",
"password": "xxxxx"
},
"index": "member",
"size": 5000
},
"dest": {
"index": "member"
}
}'
5、检查数据完整性