ES数据迁移

412 阅读3分钟

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