ES备份快照到hdfs
Elasticsearch 副本提供了高可靠性,可以容忍节点丢失而不会中断服务。但是,副本并不提供对灾难性故障的保护。对这种情况,你需要的是对集群真正的备份——在某些东西确实出问题的时候有一个完整的拷贝。
通过快照的方式,将Elasticsearch集群中的数据,备份到HDFS上,这样数据即存在于Elasticsearch(简称ES)集群当中,又存在于HDFS上。当ES集群出现不可恢复性的故障时,可以将数据从HDFS上快速恢复。
ES集群快照存在版本兼容性问题:https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore.html
安装插件
1.命令安装,但是网不好会很惨的
bin/elasticsearch-plugin install repository-hdfs
2.下载好的zip包,安装
参考链接:https://www.elastic.co/guide/en/elasticsearch/plugins/7.9/repository-hdfs.html
执行命令
bin/elasticsearch-plugin install file:///home/hadoop/elk/es-reporitory.zip
执行结果,期间输入选项(Continue with installation? [y/N]y)为y即可。
-> Installing file:///opt/server/elasticsearch-7.8.1/repository-hdfs-7.8.1.zip -> Downloading file:///opt/server/elasticsearch-7.8.1/repository-hdfs-7.8.1.zip [=================================================] 100% @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: plugin requires additional permissions @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ * java.lang.RuntimePermission accessClassInPackage.sun.security.krb5 * java.lang.RuntimePermission accessDeclaredMembers * java.lang.RuntimePermission getClassLoader * java.lang.RuntimePermission loadLibrary.jaas * java.lang.RuntimePermission loadLibrary.jaas_nt * java.lang.RuntimePermission loadLibrary.jaas_unix * java.lang.RuntimePermission setContextClassLoader * java.lang.RuntimePermission shutdownHooks * java.lang.reflect.ReflectPermission suppressAccessChecks * java.net.SocketPermission * connect,resolve * java.net.SocketPermission localhost:0 listen,resolve * java.security.SecurityPermission insertProvider.SaslPlainServer * java.security.SecurityPermission putProviderProperty.SaslPlainServer * java.util.PropertyPermission * read,write * javax.security.auth.AuthPermission doAs * javax.security.auth.AuthPermission getSubject * javax.security.auth.AuthPermission modifyPrincipals * javax.security.auth.AuthPermission modifyPrivateCredentials * javax.security.auth.AuthPermission modifyPublicCredentials * javax.security.auth.PrivateCredentialPermission javax.security.auth.kerberos.KerberosTicket * "*" read * javax.security.auth.PrivateCredentialPermission javax.security.auth.kerberos.KeyTab * "*" read * javax.security.auth.PrivateCredentialPermission org.apache.hadoop.security.Credentials * "*" read * javax.security.auth.kerberos.ServicePermission * initiate See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html for descriptions of what these permissions allow and the associated risks. Continue with installation? [y/N]y -> Installed repository-hdfs
安装成功后,在 Elasticsearch 安装目录下的plugins
目录下,新增一个名为repository-hdfs
的目录
创建备份仓库
1.创建hdfs目录 hdfs dfs -mkdir elasticsearch 给目录拥有es用户的权限
2.到es执行
curl -XPUT 'http://ip-es:9200/_snapshot/备份仓库名称' -H 'content-Type:application/json' -d ' { "type": "hdfs", "settings": { "uri": "hdfs://master:8020", "path": "/elasticsearch/respositories/es_hdfs_repository", "max_snapshot_bytes_per_sec": "50mb", "max_restore_bytes_per_sec": "50mb" }}'
max_snapshot_bytes_per_sec:20mb/s
指定数据从es写入仓库的时候进行限流,默认值20mb/s
max_restore_bytes_per_sec:20mb/s
指定数据从仓库恢复到es的时候进行限流,默认值20mb/s
查询仓库
curl -X GET ip:9200/_snapshot?pretty
注销仓库
curl -X DELETE localhost:9200/_snapshot/仓库名称?pretty
对索引做备份
默认备份所有索引
curl -XPUT 'http://ip:9200/_snapshot/库名/快照名?wait_for_completion=true&pretty' -H 'Content-Type: application/json'
wait_for_completion=true
参数表示阻塞该操作,直到该操作执行完成之后在返回。
单独索引快照
curl -XPUT 'http://host:esPort/_snapshot/es_hdfs_repository/snapshot_1?wait_for_completion=true' -d '
{
"indices":["index1","index2"],
"ignore_unavailable":true,
"include_global_state":false,
"partial":true
}'
# 查看备份进度和结果 curl -XGET 'http://host:esPort/_snapshot/es_hdfs_repository/snapshot_1?pretty'
(1)ignore_unavailable,如果设置为true,则不存在的index会被忽略,不会进行备份。默认情况不设置
(2)include_global_state 设置为false,可以阻止集群把全局的state也作为snapshot一部分备份数据。
删除快照
curl -XDELETE 'http://ip:9200/_snapshot/仓库名/快照名'
数据恢复
索引快照的还原,可以分为两种情况,分别是:
- 在同一个集群还原快照;
- 在不同的集群还原快照。
参考链接:https://blog.csdn.net/zuodaoyong/article/details/105022910
参考:https://blog.csdn.net/qq_35246620/article/details/88874767