ElasticSearch索引数据备份与恢复

索引数据备份

在磁盘创建备份目录并授权

sh 复制代码
# 创建备份目录
/home/esbackup
# 授权
chmod 777 /home/esbackup

修改配置文件elasticsearch.yml

sh 复制代码
echo 'path.repo: ["/home/esbackup"]' >> /etc/elasticsearch/elasticsearch.yml

重启elasticsearch(我是docker创建的,所以上述两条命令在docker中执行,可提前挂载)

sh 复制代码
docker restart elasticsearch

打开kibana控制台-开发者选项

新建备份仓库

sh 复制代码
PUT _snapshot/esbackup 
{
    "type": "fs", 
    "settings": {
        "location": "/home/esbackup" 
    }
}

查看备份仓库

sh 复制代码
GET _snapshot

备份置顶索引

snapshot_20230223这个名随便起,一般以时间为名

sh 复制代码
# 备份指定索引
PUT _snapshot/esbackup/snapshot_20230223
{
    "indices": "索引名"
}

查看备份情况

sh 复制代码
# 查看备份情况
GET _snapshot/esbackup/snapshot_20230223/_status
GET _snapshot/esbackup/snapshot_20230223

成功标志

索引数据恢复

删除之前的索引

sh 复制代码
DELETE /索引名

从备份过的快照恢复

sh 复制代码
POST /_snapshot/esbackup/snapshot_20230223/_restore

查看恢复状态,状态码返回200即可

sh 复制代码
GET _recovery
GET 索引名/_recovery

删除指定快照

sh 复制代码
DELETE _snapshot/esbackup/快照名

每日备份的shell脚本,供参考

sh 复制代码
#!/bin/bash

# 执行快照备份
time=$(date "+%Y%m%d")
logfile="/tmp/esbacklogs/"${time}".log"

curl -s -u elastic:changme -XPUT "http://127.0.0.1:9200/_snapshot/esbackup/snapshot_"${time} -H 'Content-Type: application/json' -d'
{
    "indices": "test_index, test_index2"
}'

# 快照备份需要一定时间,60s后检查备份情况
sleep 60

echo ""
curl -s -u elastic:changme -XGET "http://127.0.0.1:9200/_snapshot/esbackup/snapshot_"${time} | grep "SUCCESS" >> $logfile

if [ $? -eq 0 ]
then
  echo "backup elasticsearch success" >> $logfile
else
  echo "backup elasticsearch fail" >> $logfile
fi
echo ""

# 删除10天前的快照
delete_time=$(date "+%Y%m%d" -d " -10 day")
curl -s -u elastic:changme -XDELETE "http://127.0.0.1:9200/_snapshot/esbackup/snapshot_"${delete_time} >> $logfile
相关推荐
哈喽姥爷2 小时前
Spring Boot---自动配置原理和自定义Starter
java·spring boot·后端·自定义starter·自动配置原理
小蒜学长3 小时前
基于springboot 校园餐厅预约点餐微信小程序的设计与实现(代码+数据库+LW)
数据库·spring boot·微信小程序
老华带你飞4 小时前
考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)
java·vue.js·spring boot·考研·小程序·毕设·考研论坛平台小程序
伍哥的传说4 小时前
Lodash-es 完整开发指南:ES模块化JavaScript工具库实战教程
大数据·javascript·elasticsearch·lodash-es·javascript工具库·es模块·按需导入
dazhong20125 小时前
Spring Boot 项目新增 Module 完整指南
java·spring boot·后端
xrkhy5 小时前
SpringBoot之日志处理(logback和AOP记录操作日志)
java·spring boot·logback
上官浩仁7 小时前
springboot synchronized 本地锁入门与实战
java·spring boot·spring
m0_748461397 小时前
Spring Boot + Vue 项目中使用 Redis 分布式锁案例
vue.js·spring boot·redis
山东小木7 小时前
JBoltAI需求分析大师:基于SpringBoot的大模型智能需求文档生成解决方案
人工智能·spring boot·后端·需求分析·jboltai·javaai·aigs
不会聊天真君6478 小时前
ES(springcloud笔记第五期)
笔记·elasticsearch·spring cloud