使用ElasticSearch-dump工具进行ES数据迁移、备份

news/2024/10/6 13:39:53/

elasticsearchdump_0">elasticsearch-dump基本使用

该工具基于第三方Elasticdump工具来实现,仓库地址:https://github.com/elasticsearch-dump/elasticsearch-dump/tree/master,用于更加快捷方便的将Elasticsearch不同集群的数据进行索引备份和还原。

一、安装

1、通过node安装

node.js版本需大于v10.0.0

这里我就只是简单的使其临时生效,永久生效请自行写入具体的profile文件。

[root@localhost opt]# wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz
[root@localhost opt]# tar xvf  node-v12.18.3-linux-x64.tar.xzexport 
[root@localhost opt]# PATH=$PATH:/root/node-v12.22.12-linux-x64/bin/
[root@localhost opt]# npm -v
6.14.6
[root@localhost opt]# node -v
v12.18.3

2、通过docker安装

这种比较方便

原本作者放出的镜像:

docker pull elasticdump/elasticsearch-dump

e.g:

docker run --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump \
--input=http://production.es.com:9200/my_index \
--output=/tmp/my_index_mapping.json \
--type=data

该镜像只能使用elasticdump对单个具体索引进行备份,局限性较大。

我在作者镜像的基础上增加了使用multielasticdump对多个索引进行整体备份/恢复 (镜像基于node:18-alpine,仅增加命令选择,无其他任何变更,可放心使用。)

docker pull zhy94666/elasticsearchdump:latest

e.g:

# 多索引备份
docker run -it --rm -v ./es_bak:/opt/es_bak zhy94666/elasticsearchdump more \
--direction=dump \
--match='*' \
--input=http://*****:9200 \
--output=/opt/es_bak
# 单索引备份
docker run --rm -ti -v /data:/tmp zhy94666/elasticsearchdump one \
--input=http://production.es.com:9200/my_index \
--output=/tmp/my_index_mapping.json \
--type=data

二、基本使用

elasticdump

备份单个索引

这个命令将会将索引INDEX的数据导出到指定路径下的INDEX.json文件。

elasticdump \--input=http://localhost:9200/INDEX \--output=/path/to/output/INDEX.json \--type=data
修改速率(默认100条每秒)
elasticdump \--input=http://localhost:9200/INDEX \--output=/path/to/output/INDEX.json \--type=data \--limit 1000
还原单个索引

这将会将INDEX.json文件中的数据导入到Elasticsearch中的指定索引。

elasticdump \--input=/path/to/output/INDEX.json \--output=http://localhost:9200/INDEX \--type=data \--limit 10000
备份/恢复至/从S3中

备份

elasticdump \--s3AccessKeyId "${access_key_id}" \--s3SecretAccessKey "${access_key_secret}" \--input=http://production.es.com:9200/my_index \--output "s3://${bucket_name}/${file_name}.json"

恢复

elasticdump \--s3AccessKeyId "${access_key_id}" \--s3SecretAccessKey "${access_key_secret}" \--input "s3://${bucket_name}/${file_name}.json" \--output=http://production.es.com:9200/my_index
修改备份文件大小
elasticdump \--input=http://localhost:9200/INDEX \--output=/path/to/output/INDEX.json \--type=data \--fileSize 10mb
仅备份mapping映射结构(–type参数,重要!)
elasticdump \--input=http://localhost:9200/INDEX \--output=/path/to/output/INDEX.json \--type=data (该参数可选default: data, options: [index, settings, analyzer, data, mapping, policy, alias, template, component_template, index_template])

multielasticdump

可选参数
  • match: '^.*$'通配符匹配需要备份/恢复的索引
  • order: 'asc'排序,可选:asc / desc
  • input: null输入源,地址、备份目录等等
  • output: null输出地址,地址、备份目录等等
  • timeout: null超时时间
  • limit: 100速率
  • offset: 0偏移量?
  • size: -1
  • direction: dump备份时,–direction 为 dump(默认值),则 --input 必须是 Elasticsearch 服务器的 URL,–output 必须是一个目录。每个匹配的索引将生成数据、映射和分析器文件。
    恢复时,–direction 应设为 load,–input 必须是转储目录,–output 必须是 Elasticsearch 服务器的 URL。
  • ignoreType: `` dump或load时忽略的类型,可选:data,mapping,analyzer,alias,settings,template
  • includeType: `` dump或load时允许的类型,可选:data,mapping,analyzer,alias,settings,template
  • prefix: ''' 允许为索引添加前缀,e.g:${index}-backup-2018-03-13
  • suffix: '' 允许为正在创建的索引添加后缀,e.g:es6-${index}

三、简单范例

多索引备份

multielasticdump \ --direction=dump \ --match='r*' \ --input=http://172.16.0.79:9200 \ --output=./es_bak

多索引还原

multielasticdump \ --direction=load \ --match='^.*$' \ --input=/root/es_bak \ --includeType='data' \ --output=http://elastic:123456@172.18.0.25:9200 \ --limit=2000


http://www.ppmy.cn/news/1535356.html

相关文章

现代身份和访问管理 IAM 如何降低风险

您的公司是否仍在使用 1998 年时的身份管理系统?仅凭用户名和密码就能登录本地网络并访问几乎所有资源吗? 虽然大多数企业已经转向现代身份和访问管理(IAM) 平台,但成千上万的企业和其他组织仍然依赖过时的用户名/密码系统。 如果你看一下传…

怎么避免在pod产生-派生炸弹(Fork Bomb)? k8s(kubernetes)

通过修改kubelet的配置,限制每个pod能用的pid数量即可解决此问题。 kubelet 可以通过设置PodPidsLimit参数来限制每个容器内的进程数量。 1.【kubelet节点】 /var/lib/kubelet/config.yaml文件中添加如下的内容 # 30仅仅是举例 podPidsLimit: 302.【kubelet节点】…

Bolt.new:终极自动化编程工具

兄弟们,终极写代码工具来了—— Bolt.new!全方位的编程支持: StackBlitz 推出了 Bolt․new,这是一款结合了 AI 与 WebContainers 技术的强大开发平台,允许用户快速搭建并开发各种类型的全栈应用。 它的主要特点是无需…

字节跳动收购Oladance耳机:强化音频技术,加速VR/AR生态布局

字节跳动收购Oladance耳机:加码VR/AR领域布局 近日,字节跳动宣布已完成对开放式耳机品牌Oladance的收购,实现了对该品牌的100%控股。这一收购标志着字节跳动在AI硬件领域的进一步扩展和深化,特别是对其VR/AR领域布局的重要加码。 …

AI大模型的转折点,关注哪些机遇?

近期,人工智能领域取得又一突破性进展,OpenAI官方隆重推出了其最新力作——模型o1。这款模型的最大亮点在于,它融合了强化学习(RL)的训练方法,并在模型推理过程中采用了更为深入的内部思维链(ch…

自然种子启发,4D 打印软机器人,环境探索新工具

想象一下,一颗小小的种子,竟能成为软机器人的灵感源泉!在科技的奇妙世界里,受牻牛儿苗科种子启发,研究人员利用 4D 打印技术,打造出了具有独特性能的软机器人——《4D Printing of Humidity‐Driven Seed I…

多模态人像编辑:PortraitGen将2D肖像视频提升到4D 高斯场

这篇文章《Portrait Video Editing Empowered by Multimodal Generative Priors》,作者是来自中国科学技术大学。文章介绍了一种名为PortraitGen的肖像视频编辑方法,它使用多模态生成先验来实现一致性和富有表现力的风格化编辑。 文章地址:P…

Vue 技术进阶 day2 数据监视的原理、其他内置指令、自定义指令、生命周期、组件化、VueComponent构造函数

目录 1.Vue监测数据的原理 1.1 原理 1.1.1 数据劫持 1.1.2 观察者模式(Vue内部的实现) 1.1.3 更新组件 1.1.4 计算属性和侦听器 1.2 后添加属性做响应式(Vue.set / vm.$set) 1.3 对象和数组的响应式 1.4 数据监视案例 2.指令 2.1 内置指令 2.…