当前位置: 首页 > news >正文

使用elasticdump高效备份与恢复Elasticsearch数据

一、安装nodejs环境

1.下载安装包

[root@es ~]# cd /data/software/
[root@es software]# wget https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v18.18.2/node-v18.18.2-linux-arm64.tar.xz

2.解压安装

[root@es software]#  cd /data/software
[root@es software]#  tar xf  node-v18.18.2-linux-arm64.tar.gz
[root@es software]#  echo 'export PATH=/data/software/node-v18.18.2-linux-arm64/bin/:$PATH' >>/etc/profile
[root@es software]#  source /etc/profile
[root@es software]#  node -v
[root@es software]#  npm -v

3.验证

二、elasticdump 安装

1.在线安装elasticdump

[root@es software]# npm install elasticdump -g[root@es software]# elasticdump --help

2.打包elasticdump(可选)

如果需要离线环境安装可以执行以下打包操作。

#安装打包工具
[root@es software]# npm install -g npm-pack-all
/data/software/node-v10.24.1-linux-x64/bin/npm-pack-all -> /data/software/node-v10.24.1-linux-x64/lib/node_modules/npm-pack-all/index.js
+ npm-pack-all@1.12.7
added 19 packages from 14 contributors in 20.689s#切换到到elasticdump安装目录 
[root@es software]# cd node-v10.24.1-linux-x64/lib/node_modules/elasticdump#执行打包指令
[root@es elasticdump]# npm-pack-all
npm notice === Tarball Details === 
npm notice name:          elasticdump                             
npm notice version:       6.124.0                                 
npm notice filename:      elasticdump-6.124.0.tgz                 
npm notice package size:  13.3 MB                                 
npm notice unpacked size: 98.4 MB                                 
npm notice shasum:        53cc189f1a6a1abce2651fda2015061d79b19568
npm notice integrity:     sha512-ud6U18MwrrvqK[...]8qvi4FpSY52Ww==
npm notice total files:   5075                                    
npm notice 
elasticdump-6.124.0.tgz#当前目录生成 elasticdump-6.*.tgz

3.离线安装elasticdump(可选)

#将安装包上传到离线环境
[root@ansible-111 software]#  npm install elasticdump-*.tgz#建软链接
[root@ansible-111 software]# ln -s /data/software/node_modules/elasticdump/bin/elasticdump /usr/bin/elasticdump#查看
[root@ansible-111 software]# ll /usr/bin/elasticdump
lrwxrwxrwx 1 root root 55 Jul  3 15:06 /usr/bin/elasticdump -> /data/software/node_modules/elasticdump/bin/elasticdump# 验证
[root@ansible-111 software]# elasticdump --help
elasticdump: Import and export tools for elasticsearch
version: 6.120.2

三、elasticdump备份与恢复

1.备份脚本(每天凌晨1点)

[root@ansible-111 es_backup]# vim elasticdump_backup.sh 
#!/bin/bashES_HOST="http://172.16.130.72:9200"
ES_USER="elastic"
ES_PASS="elastic"
BACKUP_DIR="./bakup"   # 备份目录# 创建备份目录(按日期)
TIMESTAMP=$(date +%Y%m%d)
TARGET_DIR="$BACKUP_DIR/$TIMESTAMP"
mkdir -p "$TARGET_DIR"# 获取所有索引(排除系统索引)
INDICES=$(curl -s -u "$ES_USER:$ES_PASS" "$ES_HOST/_cat/indices?h=index" | grep -v '^\.')# 循环备份每个索引
for INDEX in $INDICES; doecho "Backing up index: $INDEX"# 备份 mappingelasticdump \--input="http://${ES_USER}:${ES_PASS}@${ES_HOST#http://}/$INDEX" \--output="$TARGET_DIR/${INDEX}_mapping.json" \--type=mapping# 备份数据elasticdump \--input="http://${ES_USER}:${ES_PASS}@${ES_HOST#http://}/$INDEX" \--output="$TARGET_DIR/${INDEX}_data.json" \--type=data \--limit=1000       
done echo "Backup completed! Files saved to: $TARGET_DIR"#数据量大需要压缩可以改为--output=$|gzip > /data/linux.json.gz# 添加执行权限
[root@ansible-111 es_backup]# chmod +x elasticdump_backup.sh # 添加定时任务备份
[root@ansible-111 es_backup]# crontab -e
# 每天凌晨1点执行备份(注意使用脚本绝对路径)
#0 1 * * * /bin/bash /data/es_backup/elasticdump_backup.sh >> /data/es_backup/elasticdump_backup.log 2>&1

2.恢复语句

elasticdump \--input=my_index_mapping.json \--output=http://target:9200/my_index \--type=mappingelasticdump \--input=my_index_data.json \--output=http://target:9200/my_index \--type=data

http://www.dtcms.com/a/269968.html

相关文章:

  • WebSocket详细教程 - SpringBoot实战指南
  • EPLAN 电气制图(四):EPLAN 总电源电路设计知识详解
  • mit6.5840-lab3-3D-SnapShot-25Summer
  • 常见前端开发问题的解决办法
  • 深度学习——神经网络1
  • JK触发器Multisim电路仿真——硬件工程师笔记
  • HMI安全设计规范:ISO 26262合规的功能安全实现路径
  • python2.7/lib-dynload/_ssl.so: undefined symbol: sk_pop_free
  • 查询依赖冲突工具maven Helper
  • 常见的网络攻击方式及防御措施
  • 人工智能与人工智障———仙盟创梦IDE
  • Go HTTP 调用(上)
  • LeetCode 1248.统计优美子数组
  • cocos2dx3.x项目升级到xcode15以上的iconv与duplicate symbols报错问题
  • 云原生时代的日志管理:ELK、Loki、Fluentd 如何选型?
  • C++11 算法详解:std::copy_if 与 std::copy_n
  • UVC(USB Video Class,USB 视频类)协议
  • 代码详细注释:ARM-Linux字符设备驱动开发案例:LCD汉字输出改进建议开发板断电重启还能显示汉字,显示汉字位置自定义
  • 高版本的MacOS如何降级?
  • 数据库|达梦DM数据库配置实例步骤
  • npm 包 scheduler 介绍
  • 黑马点评系列问题之P37商户点评缓存作业,用了string和list两种方法,可以直接复制粘贴
  • K8s-配置管理
  • 【web安全】SQLMap 参数深度解析:--risk 与 --level 详解
  • linux网络编程之IO多路复用模型
  • 车载以太网-TC8测试-UT(Upper Tester)
  • Redis 缓存进阶篇,缓存真实数据和缓存文件指针最佳实现?如何选择?
  • 2025年微软mos备考攻略-穷鬼版
  • 3.2 ASPICE的项目监控
  • 内网服务器怎么设置公网远程访问? windows桌面连接和Linux自带SSH外网异地跨网用完整步骤教程