首页 » Linux » elasticsearch集群备份与恢复

elasticsearch集群备份与恢复

 
文章目录

elasticsearch集群备份与恢复

官方文档参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshots-register-repository.html

使用无论哪个存储数据的软件,定期备份你的数据都是很重要的。Elasticsearch 副本提供了高可靠性;它们让你可以容忍零星的节点丢失而不会中断服务。

但是,副本并不提供对灾难性故障的保护。对这种情况,你需要的是对集群真正的备份——在某些东西确实出问题的时候有一个完整的拷贝。

要备份你的集群,你可以使用 snapshot API。这个会拿到你集群里当前的状态和数据然后保存到一个共享仓库里。这个备份过程是”智能”的。你的第一个快照会是一个数据的完整拷贝,但是所有后续的快照会保留的是已存快照和新数据之间的差异。随着你不时的对数据进行快照,备份也在增量的添加和删除。这意味着后续备份会相当快速,因为它们只传输很小的数据量。

要使用这个功能,你必须首先创建一个保存数据的仓库。有多个仓库类型可以供你选择:

  • 共享文件系统,比如 NAS
  • Amazon S3
  • HDFS (Hadoop 分布式文件系统)
  • Azure Cloud

创建共享文件系统nfs和所有节点挂载

nfs-server/etc/exports配置如下:

/data/nfs_es_snapshot_data 192.168.0.0/24(rw,sync,no_root_squash)

然后所有的集群节点包括primary挂载同一目录下。

mount -t nfs -o vers=4,nolock,proto=tcp 192.168.0.1:/data/nfs_es_snapshot_data /data/backup/backup_es_snapshot

更改共享目录权限和调整用户uid和gid

如果所有节点的elasticsearchuidgid不一样的话,需要调整成一样,不然后面创建仓库会报权限错,调整方法如下:

systemctl stop elasticsearch.service 
usermod -u 2000 elasticsearch 
groupmod -g 2000 elasticsearch 
id elasticsearch
find / -user 996 -exec chown -h elasticsearch {} \;
ll /data/elasticsearch_data/
find / -group 994 -exec chgrp -h elasticsearch {} \;
ll /data/elasticsearch_data/
ll /var/log
systemctl start elasticsearch.service 
systemctl status elasticsearch.service 

更改共享目录权限:

chown -R elasticsearch:elasticsearch /data/backup/backup_es_snapshot

增加path.repo到配置文件

在所有节点elasticsearch.yml中增加以下配置

path.repo: ["/data/backup/backup_es_snapshot","positon2"]
有多个可以增加多个的

然后重启生效

创建一个仓库

命令如下:

curl -X PUT -H 'Content-Type:application/json' 'http://192.168.0.1:9200/_snapshot/clc_es_backup' -d '{
"type": "fs",
"settings": {
  "location": "/data/backup/backup_es_snapshot",
  "compress": true
}
}'

其中clc_es_backup是仓库名字,可以更改的,
共享文件系统类型是fs
location 是挂载目录

创建一个快照和后续备份

no.1创建所有index
curl -X PUT -H 'Content-Type:application/json' 'http://192.168.0.1:9200/_snapshot/clc_es_backup/es_snapshot_20200516?wait_for_completion=true'

no.2 创建你想创建的索引
curl -X PUT -H 'Content-Type:application/json' 'http://192.168.0.1:9200/_snapshot/clc_es_backup/es_snapshot_20200516?wait_for_completion=true' -d '{
  "indices": "index1,index2,index3"
  }'

如果要增量备份的话,只要把快照名字更改一下,但这个备份是基于上一份快照的,只备份新的数据。

删除快照

curl -X DELETE -H 'Content-Type:application/json' 'http://192.168.0.1:9200/_snapshot/clc_es_backup/es_snapshot_20200516

列出快照信息

curl http://192.168.0.1:9200/_snapshot/clc_es_backup/es_snapshot_20200516?pretty

查看所有快照信息,可以用*来代替快照名字:

 curl http://192.168.0.1:9200/_snapshot/clc_es_backup/*?pretty

elasticserarch常用命令

1、集群状态
curl http://192.168.0.1:9200/_cat/health?v

2、索引情况
curl http://192.168.0.1:9200/_cat/indices?v&pretty

3、查看版本信息
curl http://192.168.0.1:9200

4、列出相关帮助
curl http://192.168.0.141:9200/_cat

 

原文链接:elasticsearch集群备份与恢复,转载请注明来源!

1