Elasticsearch 生产使用 | Linux 数据备份与恢复 --- 分享

博客介绍了Elasticsearch数据备份与恢复的方法。因断电或数据损坏时重启及还原数据麻烦,需进行备份。先进行环境检测,若不支持curl命令则安装。接着介绍备份步骤,包括修改配置文件、创建仓库等;还说明了恢复数据的流程,如查看最新快照、编辑恢复脚本等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.目的?

  每当elasticsearch 断电或者数据锁坏时,此时 重启es就特别麻烦,es 状态为 red,尤其是还原数据,还得删除部分数据,有鉴于此,所以需要对es 数据进行备份还原。

  特意研究了一下,做个记录。

2.环境检测。

输入命令,检测是否支持 curl 命令:

 curl --version

出现如下信息,则说明支持此命令。

2.1  curl 命令不支持,安装办法。

2.1.1 上传  文件。

2.1.2 解压 tar -zxvf curl-7.20.1.tar.gz

2.1.3 安装,执行命令

cd curl-7.20.1

./configure

make & make install

2.1.4 再次执行 2. 环境检测。

 

3.备份es 数据。

3.1 修改elasticsearch 配置文件 elasticsearch.yml

加入一行

path.repo: ["/usr/local/elasticsearch/snapshot"]

此路径为 es 快照路径, /usr/local/elasticsearch 在这一部分为你的 es 路径所在。

3.2 启动es,创建仓库。

  在 linux 直接执行 下面命令:

curl  -H "Content-Type: application/json" -XPUT http://你的ip:端口/_snapshot/backusssp -d '{"type": "fs", "settings": {"location":"location":"/usr/local/elasticsearch/snapshot"  }}'

注意,这里不加 -H "Content-Type: application/json" 会报 Elasticsearch 错误:406 | Content-Type heade [xxx] is not supported  

这里的 /usr/local/elasticsearch 和上面对应。返回显示:

{

"acknowledged": true

}

同时,在你的 elasticsearch 下面 创建文件夹 snapshot 

3.3 在elasticsearch 下面,创建文件夹 back。

cd elasticsearch

mkdir back

3.4 编辑 es-back.sh ,修改配置。

cd back

vi es-back.sh

添加配置如下:
#!/bin/bash

#!/bin/bash

# 增量备份每小时的数据
# 这里 是你需要修改得 你的         ip:端口
ipHost='10.0.1.91:9200'
# 五分钟 循环备份一次
echo '开始备份,每小时增量备份一次'
while true;
do
    # 设置文件名 时间格式(年月日时):20190620
    indexName=`date +%Y%m%d%H`
    # 删除当天的索引
    curl -XDELETE ${ipHost}/_snapshot/backup/${indexName}?pretty
    echo 'sleep 1m'
    sleep 1m
    curl -XPUT ${ipHost}/_snapshot/backup/${indexName}?wait_for_completion=true
    echo '\n备份索引 '+${indexName}+' , sleep 4m'
    sleep 9m
done

编辑保存之后,退出。注意:上面 ipHost 对应的地址是你需要修改得。这里是每小时增量备份一次。

3.5 es-back.sh 添加权限。

chmod 777 es-back.sh

3.6  后台运行备份文件。

./es-back.sh &

4. 还原 es 数据,在你需要恢复的时候才能用到,同时,先把elasticsearch 下面的data先备份一份,切记

4.1 查看es 最新快照。

在这里 用get 请求,获取所有快照索引。

_snapshot/backup/_all

  提交请求,把网页拉倒最下面一行,找到最后面一个 snapshot 的值,后面要用到的 (恢复的快照索引 backupIndex

4.2 在 elasticsearch 的 back 文件夹下,编辑 es-restore.sh 文件

vi es-restore.sh

添加配置如下:

#!/bin/bash
# es 快照还原

# 你的 ip 端口
ipHost='10.0.1.91:9200'
# 你的es文件目录 压缩文件,原数据 data
esPath='/usr/local/elasticsearch'
# 要恢复的快照索引,对应4.1 的 snapshot  的值
backupIndex='2019062009'

cd ${esPath}
date=`date +%Y%m%d%H%M%S`
tar -cvf es-data-${date}.tar.gz data
# 删除es所有数据
echo '清空数据'
curl -XDELETE http://${ipHost}/_all
# 恢复数据
echo '\n开始恢复快照数据\n'
curl -XPOST http://${ipHost}/_snapshot/backup/${backupIndex}/_restore
echo '\n数据恢复完成'

保存退出。

4.3 赋予权限 es-restore.sh。

chmod 777 es-restore.sh

4.4  运行恢复文件。

./es-restore.sh

4.5 显示 数据恢复完成 证明数据已经恢复完毕,同时 es 数据量 大的话,请耐心等待,在没有恢复数据之前,es 数据应该是空的。

Ok,基本完成,es 此时应该恢复为 绿色。


其他:

       Elasticsearch 清除 unssigned,解决 red 问题 --- 采坑

       Elasticsearch 错误:406 | Content-Type heade [xxx] is not supported --- 采坑

       Elasticsearch recovery.RecoveryFailedException: [xxx][0]: Recovery failed on {node-1} --- 采坑

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值