es - 备份还原

ES提供快照和恢复功能,我们可以在远程文件系统仓库(比如共享文件系统、S3、HDFS等)中单独给部分索引或者整个集群创建快照。这些快照对备份非常有用,它们能相对较快地被恢复。但是,快照只能被恢复到可以读取他们的ES版本中,注意版本对应。

本文采用 snapshot 本地存储方式实现es的备份还原。

注册repository

首先我们在我们的电脑上创建一个如下的目录:/shared_folder/my_repo 

因为在创建snapshot时,elasticsearch是用elasticsearch用户来执行的,所以需要个这些文件夹分别授权,赋予权限:chmod -R 1777 /shared_folder/my_repo 

将以下path.repo属性添加到我们运行的所有node的elasticsearch.yml文件中:

path.repo: /shared_folder/my_repo

然后启动我们的Elasticsearch及Kibana

{
    "type":"fs",
    "settings":{
        "location":"/shared_folder/my_repo"
    }
}

查看已注册快照仓库:

GET _snapshot

备份ES

我们打入如下的命令来对我们的user索引进行snapshot:

PUT _snapshot/my_local_repo/snapshot_1

{
    "indices":"user",//无该行代表全部索引备份
    "ignore_unavailable":true,
    "include_global_state":true
}

我们可以通过如下的命令来查看snapshot:

GET _snapshot/my_local_repo/_all

这个时候,如果我们去到我们的snapshot文件目录,我们可以看到快照文件。

还原ES

我们接下来可以通过如下的命令来删除user索引:

DELETE user

这样我们彻底地删除了这个索引。那么我们该如何把之前备份的数据恢复回来呢?

 在Kibana中打入如下的命令:

POST _snapshot/my_local_repo/snapshot_1/_restore

{
    "indices":"user",//无该行则代表全部还原
    "ignore_unavailable":true,
    "include_global_state":false
}

在执行完上面的命令后,我们可以通过如下的命令来查看恢复后的user索引:

GET user/_count

备份脚本


#!/bin/bash
data1=`date "+%Y%m%d"`
data2="http://0.0.0.0:9200/_snapshot/my_local_repo/snapshot_${data1}"
LOG_FILE="/tmp/es_backup.log"


echo '-----------'
echo $data1
echo $data2
echo '----------'

echo "=====${data1}=====开始快照es" >> ${LOG_FILE}
aaa=`curl -XPUT $data2`
echo "$aaa" >> ${LOG_FILE}
echo "=====${data1}=====结束快照es" >> ${LOG_FILE}


deldata1=`date -d "7 day ago" +"%Y%m%d"` //保留7天
deldata2="http://0.0.0.0:9200/_snapshot/my_local_repo/snapshot_${deldata1}"

curl -XDELETE $deldata2

echo "------------"

echo $deldata1
echo $deldata2
echo "-------"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值