ES数据迁移
极速版
注意替换 源机器和目标机器的ip
本次实例中:
源机器ip:192.168.15.192:9200
目标机器ip: 192.168.85.204:9200
索引名称:histroy_processed_data
文件存放位置:D:/develop/es-dump/tmp/histroy_processed_data_map.json
数据文件: 要求格式为json
# 准备: Windows环境;Node;
# 安装 elasticdump
npm install elasticdump -g
###################################从源机器导出数据###############################
# 导出mapping
elasticdump --input=http://192.168.15.192:9200/histroy_processed_data --output=D:/develop/es-dump/tmp/histroy_processed_data_map.json --type=mapping
# 导出数据
elasticdump --input=http://192.168.15.192:9200/histroy_processed_data --output=D:/develop/es-dump/tmp/histroy_processed_data.json --type=data --limit=2000
###################################导入数据到目标机器###############################
# 导入mapping
elasticdump --input=D:/develop/es-dump/tmp/histroy_processed_data_map.json --output=http://192.168.85.204:9200/histroy_processed_data --type=mapping
# 导入数据
elasticdump --input=D:/develop/es-dump/tmp/histroy_processed_data.json --output=http://192.168.85.204:9200/histroy_processed_data --type=data --limit=2000
详情版
es的备份可以分为两种:一种是在线,一种是离线。
在线: 源机器和目标机器可以ping通,可以做数据传输
离线:源机器和目标机器无法连通。
本次采用离线方式:因为源机器和目标机器都在内网,无法互相连通。
备份方案就是 需要一个中间机器,这个机器是可以连通源机器和目标机器,所有操作将在中间机器上执行。
基本步骤就是 导出源机器的数据文件,然后导入到目标机器。
环境:
安装Node.js 和 elasticdump.
elasticdump和mysqldump的机制有点像,都是导出到备份文件,然后再重新load到目标机器。
如果已有Node,则直接安装elasticdump
npm install elasticdump -g
一、导出源机器的mapping和data
对照mysql的话,mapping就相当于表结构,data就相当于表数据
# 导出mapping
elasticdump --input=http://192.168.15.192:9200/histroy_processed_data --output=D:/develop/es-dump/tmp/histroy_processed_data_map.json --type=mapping
# 导出数据
elasticdump --input=http://192.168.15.192:9200/histroy_processed_data --output=D:/develop/es-dump/tmp/histroy_processed_data.json --type=data --limit=2000
limit的含义就和sql中的limit一样了,每次查询2000条数据
D:\develop\es-dump>elasticdump --input=http://192.168.15.192:9200/histroy_processed_data --output=D:/develop/es-dump/tmp/histroy_processed_data.json --type=data --limit=2000
Mon, 14 Nov 2022 09:07:35 GMT | starting dump
Mon, 14 Nov 2022 09:07:36 GMT | got 2000 objects from source elasticsearch (offset: 0)
Mon, 14 Nov 2022 09:07:36 GMT | sent 2000 objects to destination file, wrote 2000
Mon, 14 Nov 2022 09:07:36 GMT | got 2000 objects from source elasticsearch (offset: 2000)
Mon, 14 Nov 2022 09:07:36 GMT | sent 2000 objects to destination file, wrote 2000
Mon, 14 Nov 2022 09:07:36 GMT | got 2000 objects from source elasticsearch (offset: 4000)
#………………………………省略中间……………………………………
Mon, 14 Nov 2022 09:07:57 GMT | sent 2000 objects to destination file, wrote 2000
Mon, 14 Nov 2022 09:07:57 GMT | got 935 objects from source elasticsearch (offset: 50000)
Mon, 14 Nov 2022 09:07:57 GMT | sent 935 objects to destination file, wrote 935
Mon, 14 Nov 2022 09:08:01 GMT | got 0 objects from source elasticsearch (offset: 50935)
Mon, 14 Nov 2022 09:08:01 GMT | Total Writes: 50935
Mon, 14 Nov 2022 09:08:01 GMT | dump complete
二、导入到目标机器
# 导入mapping
elasticdump --input=D:/develop/es-dump/tmp/histroy_processed_data_map.json --output=http://192.168.85.204:9200/histroy_processed_data --type=mapping
# 导入数据
elasticdump --input=D:/develop/es-dump/tmp/histroy_processed_data.json --output=http://192.168.85.204:9200/histroy_processed_data --type=data --limit=2000