将Elasticsearch的快照备份到HDFS

1、安装Elasticsearch插件repository-hdfs

下载地址:https://artifacts.elastic.co/downloads/elasticsearch-plugins/repository-hdfs/repository-hdfs-6.2.3.zip

将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名称    
}
原文地址:https://www.cnblogs.com/kgdxpr/p/8617633.html