Elasticsearch备份与还原:使用elasticdump

这篇具有很好参考价值的文章主要介绍了Elasticsearch备份与还原:使用elasticdump。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在数据管理的世界里,备份和还原数据是重中之重的日常工作,特别是对于Elasticsearch这样的强大而复杂的搜索引擎。备份不仅可以用于灾难恢复,还可以在数据迁移、测试或者升级等场景中发挥重要作用。

在本博客中,我们将会重点介绍如何使用一个非常实用的工具——elasticdump——来对Elasticsearch数据进行备份和还原。我们会覆盖单索引备份还原,全部索引备份还原以及特定前缀索引的备份还原。
注:我的使用场景是从A集群同步数据到B集群迁移

Elasticdump 简介

Elasticdump是一个开源工具,它可以用于对Elasticsearch索引的数据和映射(mapping)进行导入、导出操作。Elasticdump工作在命令行接口,通过简单直观的指令集操作Elasticsearch的索引数据。

安装 Elasticdump

Elasticdump是一个基于Node.js的工具,因此首先你需要确保你的系统中安装有Node.js。然后,你可以使用以下npm命令安装Elasticdump:

npm install -g elasticdump

单索引备份与还原

下面,我们首先介绍如何对单个索引进行备份和还原:

备份单个索引

为了备份一个特定的索引,我们可以使用以下命令:

elasticdump \
  --input=http://localhost:9200/INDEX \
  --output=/path/to/output/INDEX.json \
  --type=data

这个命令将会将索引INDEX的数据导出到指定路径下的INDEX.json文件。
对于有账号密码的Elasticsearch实例,则可以使用以下脚本:

elasticdump \
  --input=http://user:passwd@localhost:9200/INDEX \
  --output=/path/to/output/INDEX.json \
  --type=data

elasticsearch 备份脚本,linux工具,elastic,elasticsearch,elasticsearch,大数据,搜索引擎
默认的速率是100条,可以通过limit 修改默认的导出数量:

elasticdump \
  --input=http://user:passwd@localhost:9200/INDEX \
  --output=/path/to/output/INDEX.json \
  --type=data --limit 10000

elasticsearch 备份脚本,linux工具,elastic,elasticsearch,elasticsearch,大数据,搜索引擎

还原单个索引

相反,如果我们想从之前创建的备份中还原单个索引,可以使用以下命令:

elasticdump \
  --input=/path/to/output/INDEX.json \
  --output=http://localhost:9200/INDEX \
  --type=data --limit 10000

这将会将INDEX.json文件中的数据导入到Elasticsearch中的指定索引。
带账号密码的elasticsearch实例:

elasticdump \
  --input=/path/to/output/INDEX.json \
  --output=http://user:passwd@localhost:9200/INDEX \
  --type=data --limit 10000

所有索引备份与还原

备份所有索引

备份Elasticsearch中的所有索引可能需要一些额外的脚本,因为Elasticdump没有直接的方式来备份所有索引。以下是一个简单的bash脚本示例,用于备份所有索引:

#!/bin/bash
for index in $(curl -s http://localhost:9200/_cat/indices?h=index)
do
  elasticdump \
    --input=http://localhost:9200/${index} \
    --output=/path/to/output/${index}.json \
    --type=data
done

还原所有索引

还原所有索引通常涉及到遍历包含备份数据的文件,并将它们导入到相应的Elasticsearch索引中。这是一个简单的bash脚本示例,用于还原在一个文件夹中的所有索引备份:

#!/bin/bash
BACKUP_DIR="/path/to/backup/directory"
for backup_file in $(ls ${BACKUP_DIR}/*.json); do
  index_name=$(basename ${backup_file} .json)
  elasticdump \
    --input=${backup_file} \
    --output=http://localhost:9200/${index_name} \
    --type=data
done

在这个脚本中,我们假设备份文件的名字与索引的名字相对应,备份文件的扩展名为.json,通过移除.json,我们获取了原始的索引名以便于还原。

匹配前缀索引备份与还原

匹配前缀索引备份

有时我们可能需要备份名称有共同前缀的多个索引。下面是一个通过前缀备份多个索引的bash脚本示例:

#!/bin/bash
PREFIX="INDEX"
for index in $(curl -s http://localhost:9200/_cat/indices?h=index | grep ^${PREFIX})
do
  elasticdump \
    --input=http://localhost:9200/${index} \
    --output=/path/to/output/${index}.json \
    --type=data
done

带账号密码的备份脚本:

#!/bin/bash

# Elasticsearch的主机和认证信息
ELASTIC_HOST="xxxx:9200"
ELASTIC_USER="xxxx"
ELASTIC_PASS="xxxxx"

# 要备份的索引的前缀
INDEX_PREFIX="xxxx"

# 输出的备份目录
BACKUP_DIR="/root/elastic1/back2"

# 获取所有以master开头的索引
INDICES=$(curl --silent --user $ELASTIC_USER:$ELASTIC_PASS \
                 --request GET "http://$ELASTIC_HOST/_cat/indices/$INDEX_PREFIX*" | \
                 awk '{ print $3 }')

# 检查备份目录是否存在,如果不存在就创建它
mkdir -p "$BACKUP_DIR"

# 逐个备份索引
for INDEX in $INDICES; do
  elasticdump \
    --input=http://$ELASTIC_USER:$ELASTIC_PASS@$ELASTIC_HOST/$INDEX \
    --output=$BACKUP_DIR/$INDEX.json \
    --type=data --limit 10000 
done

还原符合特定前缀的索引

如果只希望还原带有特定前缀的索引,您可以使用以下bash脚本作为参考:

#!/bin/bash
PREFIX="your_prefix_here"
BACKUP_DIR="/path/to/backup/directory"
for backup_file in $(ls ${BACKUP_DIR}/${PREFIX}*.json); do
  index_name=$(basename ${backup_file} .json)
  elasticdump \
    --input=${backup_file} \
    --output=http://localhost:9200/${index_name} \
    --type=data
done

带密码的可以参考以下脚本(未实践,chatgpt生成,但是基本一眼扫过没有多大问题)

#!/bin/bash

# 源 Elasticsearch 的主机和认证信息
SOURCE_ELASTIC_HOST="xxxx:9200"
SOURCE_ELASTIC_USER="xxxx"
SOURCE_ELASTIC_PASS="xxxxx"

# 目标 Elasticsearch 的主机和认证信息
RESTORE_ELASTIC_HOST="yyyy:9200"
RESTORE_ELASTIC_USER="yyyy"
RESTORE_ELASTIC_PASS="yyyyy"

# 要备份的索引的前缀 - 对于恢复来说不需要改变
INDEX_PREFIX="xxxx"

# 输入的备份目录 - 同时用于备份和恢复
BACKUP_DIR="/root/elastic1/back2"

# 获取所有以 INDEX_PREFIX 开头的索引备份文件
BACKUP_FILES=$(ls $BACKUP_DIR | grep "$INDEX_PREFIX")

# 检查备份目录是否存在,并且是否有备份文件
if [ -z "$BACKUP_FILES" ]; then
  echo "没有发现匹配前缀的备份文件, 请检查你的备份目录."
  exit 1
fi

# 逐个恢复备份文件到新实例
for FILE in $BACKUP_FILES; do
  INDEX_NAME=$(basename $FILE .json)

  elasticdump \
    --input=$BACKUP_DIR/$FILE \
    --output=http://$RESTORE_ELASTIC_USER:$RESTORE_ELASTIC_PASS@$RESTORE_ELASTIC_HOST/$INDEX_NAME \
    --type=data --limit 10000

  # 可选: 如果你还想恢复 mapping 和 settings, 添加如下命令:
  # elasticdump \
  #   --input=$BACKUP_DIR/$INDEX_NAME-mapping.json \
  #   --output=http://$RESTORE_ELASTIC_USER:$RESTORE_ELASTIC_PASS@$RESTORE_ELASTIC_HOST/$INDEX_NAME \
  #   --type=mapping

  # elasticdump \
  #   --input=$BACKUP_DIR/$INDEX_NAME-settings.json \
  #   --output=http://$RESTORE_ELASTIC_USER:$RESTORE_ELASTIC_PASS@$RESTORE_ELASTIC_HOST/$INDEX_NAME \
  #   --type=settings
done

echo "恢复完成."

与还原所有索引的脚本类似,但这里通过限定文件路径 ${BACKUP_DIR}/${PREFIX}*.json 只选取带有特定前缀的备份文件。

值得注意的是,进行大规模数据还原时,可能会因为Elasticsearch集群的性能限制、配置或者网络条件等因素影响执行效率。建议优化Elasticsearch配置,并可能需要调整批次大小或者并发数来适应你的环境。

在还原环境之前,最好确保Elasticsearch集群处于健康状态并有足够的资源来处理数据恢复过程。这些脚本是简化版本,视具体环境可能需要进一步的优化和调整。请注意,在生产环境下执行脚本前务必进行充分测试。

其他备份实现方式

Elasticdump是实现Elasticsearch备份与还原的一种方式,但并不是唯一方式。以下列举了其他的一些方法:

  • 使用Elasticsearch自带的Snapshot and Restore功能,可以创建索引的快照并存储在文件系统或者支持的云存储服务中;
  • 使用Curator工具管理索引生命周期,包括创建和删除快照;
  • 第三方服务和插件如Elastic Cloud的备份功能或者开源插件如Cerebro。

确保在实施任何备份策略之前,都应该先在非生产环境下进行测试,以保证恢复过程中数据的完整性和准确性。

通过Elasticdump,我们可以灵活高效地进行Elasticsearch的数据备份和还原,但始终记得选择适合自己业务场景和数据规模的备份方案。

值的注意的

  1. 以上备份还原主要实现了data的部分,mappingsettings正常来说也最好能备份一下!
  2. **multielasticdump **之前也尝试过,可以使用一下!
  3. 有没有增量同步的方式?貌似也可以通过logstash 这样的去做?还有企业版的ccr(Cross-Cluster Replication)?还有**INFINI **企业版的也可以?
  4. –limit 的添加可以增加一下备份还原的速度的!

注:以上博客基本chatgpt生成,大部分脚本代码没有问题,有问题的应该略微调试一下就可以了文章来源地址https://www.toymoban.com/news/detail-757619.html

到了这里,关于Elasticsearch备份与还原:使用elasticdump的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Armbian 笔记六_使用 armbian-ddbr 命令 备份/还原 eMMC 系统

    ################################################## 目录 备份还原盒子内置储存 emmc 上的系统 为什么需要备份系统? 准备工作 从系统盘启动 Armbian 如何使用 armbian-ddbr 命令备份和恢复 emmc 分区 b/Backup/备份 r/Restore/恢复 ################################################## ——————————      

    2024年02月02日
    浏览(102)
  • linux备份与还原系统(类似window上ghost备份还原)

         在linux上进行了几年的开发工作 (qt  ros) 突然发现,现在有公司硬件、笔记本台式机一台占一个系统,导致硬件太浪费,又不能用虚拟机(有时候要链接硬件必须物理机)怎么办?     台式机:           centos7 一台 开发环境,         centos stream9一台  开

    2024年02月03日
    浏览(29)
  • 使用 Easysearch 还原 Elasticsearch 快照数据

    本文主要测试验证 Elasticsearch 各版本快照在 Easysearch 中进行数据恢复。 ignore_unavailable:如果 indices 列表中的索引不存在,则是否忽略该索引而不是使快照失败。默认值为 false 。 include_global_state:是否在快照中包含集群状态(包括索引模版、生命周期配置、持久化配置等)。

    2024年02月09日
    浏览(33)
  • etcd 备份还原

    1. 查看 etcdctl 是否已经安装 2. 安装 etcdctl 3. 备份 4. 还原

    2024年02月10日
    浏览(30)
  • ETCD备份还原

    备份只需要在一个节点上备就可以了,每个节点上的数据是同步的;但是数据恢复是需要在每个主节点上进行 3.1多个master还原

    2024年02月13日
    浏览(35)
  • GHost系统备份与还原

    前期准备工作:U盘(=8G),最好大一点,如果你U盘要放GHO或者ISO文件的话,可能就不够用了。 我这里使用的老白菜工具,然后制作一个启动U盘。附教程连接:http://laobaicai.bsllcmgs.cn/upqdzz.html 1.将制作好的老白菜启动u盘插入电脑USB插口,然后开启电脑启动Boot设置,去设置USB启

    2024年02月04日
    浏览(35)
  • MySQL的备份与还原

    1、MySQL的备份说明 热备: 在数据库正在运行下进行备份,备份期间,数据库读写均可以正常进行; 温备: 数据库可用性弱于热备,备份期间,数据库只能进行读操作,不能进行写操作。 冷备: 在备份期间,应用的读写操作不可进行。 2、 基于mysqldump命令进行数据备份 数据

    2024年02月15日
    浏览(29)
  • 人大金仓逻辑备份与还原

    逻辑备份 sys_dump 备份 切换用户 su - kingbase 进入到逻辑备份工具目录 /data/KingbaseES/ES/V8/ClientTools/bin 参数-F表示文件输出格式,p为plain模式,这里输出为sql格式;-U用户,-p密码 -d数据库 逻辑还原 进入到逻辑备份工具目录 /data/KingbaseES/ES/V8/ClientTools/bin 参数-F表示文件输出格式,

    2024年01月16日
    浏览(30)
  • MySQL备份还原

    mysql create database school; mysql use school; /*  1.创建student和score表  */   --创建student表   CREATE TABLE student (   id INT(10) NOT NULL UNIQUE PRIMARY KEY ,   name VARCHAR(20) NOT NULL ,   sex VARCHAR(4) ,   birth YEAR,   department VARCHAR(20) ,   address VARCHAR(50)   );   --创建score表   CREATE TABLE score (   id INT(10) NO

    2024年02月14日
    浏览(43)
  • disql备份还原

    本文档根据官方文档,进行整理。 在 disql 工具中使用 BACKUP 语句你可以备份整个数据库。通常情况下,在数据库实例配置归档后输入以下语句即可备份数据库: 语句执行完后会在默认的备份路径下生成名为“db_bak_01”的备份集目录。 默认的备份路径为 dm.ini 中 BAK_PATH 配置的

    2024年02月20日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包