专栏首页网络小说作家的编程技术沉思录实际使用Elasticdump工具对Elasticsearch集群进行数据备份和数据还原

实际使用Elasticdump工具对Elasticsearch集群进行数据备份和数据还原

文/朱季谦

最近在开发当中做了一些涉及到Elasticsearch映射结构及数据导出导入的工作,怕以后会把这过程忘记,可谓好记性不如烂笔头,故而记录成一篇博文。

玩Elasticsearch的童鞋大概都会遇到这样一个问题,如何快速地将Elasticsearch里的索引结构映射和对应数据快速地进行备份和数据还原。

这时,就可以通过Elasticsearch的导入导出工具Elasticdump来实现,可以将Elasticsearch不同集群的数据进行索引备份和还原。

一、Elasticdump工具介绍

在npm关于Elasticdump的英文官网里,可以看到一篇关于Elasticdump的英文介绍,这个工具的logo很有意思,是一台可以搬运(迁移)东西(数据)的工具车,这个logo就表明该Elasticdump工具可用来迁移备份和恢复数据。

使用Elasticdump时特别需要是,若直接用npm install elasticdump -g来按照,node版本需要在v10.0.0以上才能支持,否则执行该指令会出错。

Elasticdump通过向发送一个input来工作output,其标准指令是

elasticdump --input SOURCE --output DESTINATION [OPTIONS]
  • input SOURCE表示读取数据源SOURCE
  • output DESTINATION表示将数据源传输到目的地DESTINATION。
  • SOURCE/DESTINATION两者都可以是Elasticsearch URL或文件,如果是Elasticsearch URL,例如http://127.0.0.1/index,就意味着是直接往地址为http://127.0.0.1ES库里导入或者从其导出索引相关数据。
  • [OPTIONS]是操作选项,比较常用有type和limit,其他操作这里就不展开介绍。

type是ES数据导出导入类型,Elasticdum工具支持以下数据类型的导入导出——

type类型

说明

mapping

ES的索引映射结构数据

data

ES的数据

settings

ES的索引库默认配置

analyzer

ES的分词器

template

ES的模板结构数据

alias

ES的索引别名

limit从SOURCE备份到DESTINATION的对象数量,默认是100,可自定义设置。

二、Elasticdump工具安装

1. 在线安装Elasticdum工具需要依赖node,故而先安装v10.0.0以上的node。

[root@zhu opt]# wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz
[root@zhu opt]# tar xvf  node-v12.18.3-linux-x64.tar.xz -C /usr/local/
[root@zhu opt]# mv /usr/local/node-v12.18.3-linux-x64 /usr/local/nodejs
[root@zhu opt]# echo export NODEJS_HOME=/usr/local/nodejs >> /etc/profile
[root@zhu opt]# echo export PATH=$PATH:$NODEJS_HOME/bin >> /etc/profile
[root@zhu opt]# echo export NODEJS_PATH=$NODEJS_HOME/lib/node_modules >>/etc/profile
[root@zhu opt]# source /etc/profile
[root@zhu opt]# ln -s /usr/local/nodejs/bin/node /usr/local/bin/node
[root@zhu opt]# ln -s /usr/local/nodejs/bin/npm /usr/local/bin/npm
[root@zhu opt]# npm -v
6.14.6
[root@zhu opt]# node -v
v12.18.3

2. 通过npm安装elasticdump

[root@zhu opt]# npm install elasticdump -g

安装成功后,进入到

[root@zhu opt]#cd /usr/local/nodejs/lib/node_modules/elasticdump/bin

可以看到有两个命令,elasticdump用来备份单个索引,multielasticdump可以用来并行备份多个索引:

root@zhu bin]# ll
总用量 20
-rwxr-xr-x. 1 1001 1001  4026 4月   9 14:38 elasticdump
-rwxr-xr-x. 1 1001 1001 14598 10月 26 1985 multielasticdump

三、Elasticdump工具使用

使用elasticdump进行单个索引备份还原操作—— - 导出索引test_event的mapping映射结构:

[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event  --output=/opt/test_event_mapping.json --type=mapping 

检查当前,发现已经备份成json文件:

[root@zhu opt]# ll
总用量 14368
-rw-r--r--. 1 root root     6200 4月   9 11:30 ucas_hisevenr_mapping.json

还可以直接导入到另一个es集群当中:

[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event   --output=http://127.0.0.2:9200/test_event --type=mapping

- 导出索引test_event的数据:

[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event  --output=/opt/data.json --type=data

同理,可直接将备份数据导入另一个es集群:

[root@zhu opt]# elasticdump --input=http://127.0.0.1:9200/test_event   --output=http://127.0.0.2:9200/test_event --type=data

elasticdump进行数据还原操作

- mapping映射结构还原:

[root@zhu opt]# elasticdump --input=/opt/test_event_mapping.json --output http://127.0.0.1:9200/ --type=mapping

- data数据还原

[root@zhu opt]# elasticdump --input=/opt/data.json    --output=http://127.0.0.1:9200/test_event    --type=data

使用elasticdump进行多个索引备份操作:

#将ES索引及其所有类型备份到es_backup文件夹中
multielasticdump direction = dump match ='^.*$'  input = http://127.0.0.1:9200   output =/tmp/es_backup
#仅备份ES索引以“ -index”(匹配正则表达式)为前缀的结尾。仅备份索引数据。所有其他类型都将被忽略。#注意:默认情况下会忽略分析器和别名类型
multielasticdump --direction=dump --match='^.*-index$' --input=http://127.0.0.1:9200 --ignoreType='mapping,settings,template'  --output=/tmp/es_backup

使用elasticdump进行多个索引还原操作:

multielasticdump --direction=load --input=/tmp/es_backup --output=http://127.0.0.1:9200

根据npm的elasticdump英文官网介绍可知,这里需要注意一点是,即使用multielasticdump有一个区别的地方是--direction的参数设置和--ignoreType参数设置。

  • 备份时,--direction=dump是默认值,则--input必须是ElasticSearch服务器基本位置的URL(即http://localhost:9200),并且--output必须是目录。每个匹配的索引都会创建一个数据,映射和分析器文件。
  • 还原时,要加载从multi- elasticsearch转储的文件,--direction应将其设置为load--input必须是multielasticsearch转储的目录,并且--output必须是Elasticsearch服务器URL。
  • --match`用于过滤应转储/加载的索引(正则表达式)。
  • --ignoreType允许从转储/加载中忽略类型。支持六个选项。data,mapping,analyzer,alias,settings,template。提供了多类型支持,使用时每种类型必须用逗号分隔,并interval允许控制生成新索引的转储/装入的时间间隔。
  • --includeType允许将类型包含在转储/装载中。支持六个选项- data,mapping,analyzer,alias,settings,template

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Elasticsearch跨集群数据迁移之离线迁移

    用户在腾讯云上自建的ES集群或者在其它云厂商购买的ES集群,如果要迁移至腾讯云ES,用户可以根据自己的业务需要选择适合自己的迁移方案。如果业务可以停服或者可以暂...

    bellen
  • 你的Elasticsearch在裸奔吗?

    安全隐患划重点: 1、印度:没有设置Elasticsearch集群安全权限; 2、婚庆网站:Elasticsearch服务器暴露到公网。 3、群友:9200端口...

    铭毅天下
  • 干货 | Elasitcsearch7.X集群/索引备份与恢复实战

    上述问题涉及到集群备份、索引数据备份、数据迁移、数据恢复等问题,而数据备份和恢复又分为:

    铭毅天下
  • Elasticsearch跨集群数据迁移

    如果是第一种场景,数据迁移过程中可以停止写入,可以采用诸如elasticsearch-dump、logstash、reindex、snapshot等方式进行数据...

    HLee
  • Elasticsearch数据迁移与集群容灾

    如果是第一种场景,数据迁移过程中可以停止写入,可以采用诸如elasticsearch-dump、logstash、reindex、snapshot等方式进行数据...

    bellen
  • Elasticsearch 跨网络、跨集群同步选型指南

    这是个经常被问到的问题。涉及到跨版本、跨网络、跨集群的索引数据的迁移或同步。我们拆解一下:

    铭毅天下
  • 自建ES集群迁移至腾讯云ES的几种方案介绍

    随着腾讯云Elasticsearch产品功能越来越丰富、产品体验越来越好。越来越多的客户将自建的ES集群或者部署在其他云厂商的 ES 集群迁移到腾讯云上来。为了...

    吴容
  • 【Elasticsearch系列之七】通过elasticdump迁移ES数据

    适合数据量不大,迁移索引个数不多的场景(索引的分片数量和副本数量需要对每个索引单独进行迁移,或者直接在目标集群提前将索引创建完成,再迁移数据),支持:analy...

    Vicwan
  • Elasticsearch 跨集群数据迁移方案总结

    elasticsearch-dump是一款开源的ES数据迁移工具, github地址: https://github.com/taskrabbit/elasti...

    Se7en258
  • elasticsearch迁移最佳实践

    把IDC自建的es集群与腾讯云es集群互通,做成一个大集群,通过es本身的数据同步功能做同步。

    迁云小助手
  • Elasticsearch RESTful API 常用操作

    ElasticSearch 是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsea...

    YP小站
  • 干货 | Elasticsearch、Kibana数据导出实战

    实际业务实战中,大家或多或少的都会遇到导入、导出问题。 根据数据源的不同,基本可以借助:

    铭毅天下
  • ELK学习笔记之Elasticsearch和Kibana数据导出实战

    实际业务实战中,大家或多或少的都会遇到导入、导出问题。 根据数据源的不同,基本可以借助:

    Jetpropelledsnake21
  • [记录点滴] 使用工具和命令对redis数据进行备份恢复

    本文记录了如何使用工具对redis数据进行恢复备份,涉及的有Redis-Dump,MySQL,Redis管道命令。

    罗西的思考
  • 成人网站泄露 108 亿数据后,一个 Elasticsearch 爱好者的思考

    昨天晚上看到《成人网站泄露 108 亿数据,内含 50 万中国用户 》的文章,因为数据是基于Elasticsearch存储的,出于好奇,查了一些国外的报道,才有...

    铭毅天下
  • Elasticsearch使用:Snapshot备份与恢复

    Elasticsearch 做备份有两种方式,一是将数据导出成文本文件,比如通过elasticdump、esm等工具将存储在 Elasticsearch 中的数...

    HLee
  • XtraBackup工具详解 Part 7 使用innobackupex对数据库进行增量备份

    XtraBackup工具详解 Part 5 使用innobackupex对数据库进行全备

    bsbforever
  • 使用elasticsearch-dump迁移elasticsearch集群数据

    最近某个5节点es集群发现其中1个主节点(被选中master)cpu负载很高,其中3节点master角色,所有节点默认data角色,初步操作重启这个主节点,使其...

    三杯水Plus
  • 使用elasticsearch-dump迁移elasticsearch集群数据

    最近某个5节点es集群发现其中1个主节点(被选中master)cpu负载很高,其中3节点master角色,所有节点默认data角色,初步操作重启这个主节点,使其...

    zd123

扫码关注云+社区

领取腾讯云代金券