7、Elasticsearch数据Snapshot备份与恢复

我们知道Elasticsearch的索引拆分成多个shard进行存储在磁盘里,shard虽然分了primary shard和replica shard,可以保证集群的数据不丢失,数据访问不间断,但如果机房停电导致集群节点全部宕机这种重大事故时,我们就需要提前定期地对数据进行备份,以防万一。

1.ES集群Snapshot备份需先配置共享存储

#在此我使用nfs为例(系统版本为Centos7)

nfs服务端

yum install -y nfs-utils

#配置挂载的文件,该文件也就是后面ES所需要配置的

vim /etc/exports

/opt/elasticsearch-7.6.1/esbackup *(rw,sync,no_root_squash)

mkdir -p /opt/elasticsearch-7.6.1/esbackup

#先为rpcbind和nfs做开机启动:(必须先启动rpcbind服务)

systemctl enable rpcbind.service

systemctl enable nfs-server.service

#然后分别启动rpcbind和nfs服务

systemctl start rpcbind.service

systemctl start nfs-server.service

#确认NFS服务器启动成功

rpcinfo -p

# 使配置生效

exportfs -r

# 查看配置情况

exportfs

#这里做完后要记得给es用户赋予写权限

nfs客户端

yum install -y nfs-utils

systemctl enable rpcbind.service

systemctl start rpcbind.service

showmount -e 服务端IP

mkdir -p /opt/elasticsearch-7.6.1/esbackup

#挂载目录

mount -t nfs 服务端IP :/opt/elasticsearch-7.6.1/esbackup /opt/elasticsearch-7.6.1/esbackup

2.修改ES配置文件

#根据自己ES的实际路径

cd /usr/local/elasticsearch-7.6.1/config/

vim elasticsearch.yml

#加上该配置项,就是我们的共享存储路径
path.repo: /opt/elasticsearch-7.6.1/esbackup

#若是ES集群的话,则所有节点都需要做此配置

3.重启ES

su - es

#通过kill命令先杀掉es进程

cd /usr/local/elasticsearch-7.6.1/bin/

nohup ./elasticsearch &

4.建立仓库

#仓库地址就是我们的共享存储 /opt/elasticsearch-7.6.1/esbackup

curl --user elastic:elastic -H "Content-Type: application/json" -XPUT http://ES IP地址:9200/_snapshot/esbackup -d '{"type": "fs","settings": {"location": "/opt/elasticsearch-7.6.1/esbackup"}}'

#完成后,共享存储下会生成一个文件

 5.Snapshot创建快照

#通过kibana进行操作

//异步备份所有打开的索引
PUT _snapshot/esbackup/snapshot_1
​
//同步备份部分索引
PUT _snapshot/esbackup/snapshot_2?wait_for_completion=true
{
"indices": "index_1,index_2"
}

//查看所有快照信息
GET _snapshot/esbackup/_all

//查看单个快照信息,可以看到所备份的索引
GET _snapshot/esbackup/snapshot_1

//删除快照
DELETE _snapshot/esbackup/snapshot_1

6.快照状态解释

GET _snapshot/esbackup/snapshot_1/_status

stage字段名词解释:

INITIALIZING:分片正在检查集群状态以查看是否可以对其进行快照。这通常非常快。

TARTED:数据正在传输到存储库。

FINALIZING:数据传输完成;分片现在正在发送快照元数据。

DONE:快照完成!

FAILED:快照过程中遇到错误,无法完成此shard/index/snapshot。检查您的日志以获取更多信息。

7.Snapshot快照恢复

//默认恢复该快照中的所有索引,默认异步,可使用wait_for_completion=true,改为同步
POST _snapshot/esbackup/snapshot_1/_restore

//从快照中恢复某个索引
POST /_snapshot/esbackup/snapshot_1/_restore
{
    "indices": "index_1"    
}

//查看还原进度
GET index_1/_recovery

 

posted @ 2022-04-18 11:32  RFAA  阅读(999)  评论(0编辑  收藏  举报