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
如果所有节点的elasticsearch
的uid
和gid
不一样的话,需要调整成一样,不然后面创建仓库会报权限错,调整方法如下:
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创建所有indexcurl -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集群备份与恢复,转载请注明来源!