将Elasticsearch的快照备份到HDFS
1、安装Elasticsearch插件repository-hdfs
将zip包放在/usr/local下
注意插件版本需要和Elasticsearch的版本对应。如果版本不匹配,在安装时会有提示
cd /usr/local/software/elasticsearch-6.2.1/bin ./elasticsearch-plugin install file:///usr/local/repository-hdfs-6.2.1.zip
安装成功后需要重启Elasticsearch
2、备份和恢复
构建一个仓库
PUT http://10.10.6.225:9200/_snapshot/backup { "type": "hdfs", "settings": { "uri": "hdfs://10.10.6.170:9000", "path": "/store", "conf_location": "/usr/local/hadoop/etc/hadoop/hdfs-site.xml" } }
一些参数的说明:
uri : hdfs的地址和端口
path : 数据存储/加载的路径
load_defaults: 是否加载hadoop默认配置(默认开启)
compress : 是否压缩元数据(默认关闭)
chunk_size : 覆盖块大小(默认关闭)
conf_location:这个参数好像不用加
在创建仓库时会报如下类似的错误
Permission denied: user=elasticsearch, access=WRITE
临时解决办法:
去修改HDFS的hdfs-site.xml文件,取消hadoop hdfs的用户权限检查。需要再找其他办法做到从根本上解决问题
vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml
增加如下配置
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
重启HDFS
备份快照
PUT http://10.10.6.225:9200/_snapshot/backup/snapshot_100?wait_for_completion=true { "indices": "cars", //备份cars的index,注意不设置这个属性,默认是备份所有index "ignore_unavailable": true, "include_global_state": false }
查看所有快照
GET http://10.10.6.225:9200/_snapshot/backup/_all
查看某个快照
GET http://10.10.6.225:9200/_snapshot/backup/snapshot_100
删除一个快照
DELETE http://10.10.6.225:9200/_snapshot/backup/snapshot_100
恢复快照
POST http://10.10.6.225:9200/_snapshot/backup/snapshot_100/_restore { "indices": "cars", //指定索引恢复,不指定就是所有 "ignore_unavailable": true, //忽略恢复时异常索引 "include_global_state": false //是否存储全局转态信息,fasle代表有一个或几个失败,不会导致整个任务失败 }
查看nginx-access-log索引的恢复进度
GET http://10.10.6.225:9200/nginx-access-log/_recovery/
查看所有索引的恢复进度
GET http://10.10.6.225:9200/_recovery/
恢复快照index重命名
{ "indices": "cars", //指定索引恢复,不指定就是所有 "ignore_unavailable": true, //忽略恢复时异常索引" include_global_state": false, //是否存储全局转态信息,fasle代表有一个或几个失败,不会导致整个任务失败 "rename_pattern": "cars", //应该是正则,要想恢复所有的就写成index名 "rename_replacement": "cars_temp" //新的index名称 }