关于ES使用HDFS来做快照备份
安装
- ES使用HDFS来做快照需要在所有节点单独安装插件,然后重启所有节点。
sudo bin/elasticsearch-plugin install repository-hdfs
该插件通知支持离线安装,下载地址[HDFS快照离线安装](https://artifacts.elastic.co/downloads/elasticsearch-plugins/repository-hdfs/repository-hdfs-5.2.2.zip.)
删除
- 可以通过以下命令来移除插件
sudo bin/elasticsearch-plugin remove repository-hdfs
配置
- 安装成功后,需要手动导入快照配置,如下:
curl -XPUT curl -u elastic -XPUT 'http://192.168.81.226:9200/_snapshot/backup_hdfs -d
'{
"type": "hdfs",
"settings": {
"uri": "hdfs://namenode:8020/",
"path": "elasticsearch/respositories/my_hdfs_repository",
"conf.dfs.client.read.shortcircuit": "true"
}
}'
- 配置项
uri
:HDFS的路径,如:“hdfs://:/”。(必须的)
path
:数据存储的路径,如:”path/to/file”。(必须的)
load_defaults
:是否加载默认的Hadoop配置(默认允许)
conf.<key>
:键入参数以用于添加到Hadoop配置。其中配置项只能调整该插件认证的Hadoop内核设置。
compress
:是否压缩数据(默认为否)
chunk_size
:重写数据块大小(默认为否)
创建snapshot快照
- 通过ES API创建snapshot
curl -XPUT -u elastic 'http://192.168.81.226:9200/_snapshot/backup_hdfs/snapshot_1' -d
'{
"indices": "metricbeat*",
"ignore_unavailable": true,
"include_global_state": false
}'
`参数解释`:这里的参数分别指定需要快照的index(支持*通配符),遇到不可用的index的策略(ignore),以及选择不备份公共信息。
* 验证快照
curl -XGET -u elastic 'http://192.168.81.226:9200/_snapshot/backup_hdfs/snapshot_1?pretty
正常情况下将返回刚才建立的快照信息。
* 查看仓库
curl -u elastic 'http://192.168.81.226:9200/_snapshot/backup_hdfs'
恢复snapshot快照
- 在恢复ES环境创建相同仓库
curl -XPUT curl -u elastic -XPUT 'http://192.168.81.227:9200/_snapshot/backup_hdfs -d
'{
"type": "fs",
"settings":
{
"compress": true,
"location": "/data2/esdatabk"
}
}'
- 挂载相同分布式文件系统目录或拷贝备份目录数据(单点ES)至新ES环境
- 恢复快照
curl -u elastic -XPOST 'http://192.168.81.227:9200/_snapshot/backup_hdfs/snapshot_1/_restore'
`PS`: 默认情况下,快照中的所有索引和集群状态都得到了恢复。可以选定要恢复的索引,也可以通过指定include_global_state选项来防止全局集群状态被恢复。索引列表支持多索引语法。rename_pattern和rename_replacement选项可用于在恢复时使用正则表达式对索引进行重命名。设置include_aliases为false,防止与索引相关联的别名被一起恢复。
curl -u elastic -XPOST 'http://192.168.81.227:9200/_snapshot/backup_hdfs/snapshot_1/_restore' -d
{
"indices": "index_1,index_2",
"ignore_unavailable": "true",
"include_global_state": false,
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}
- 验证
curl -u elastic -XGET 'http://192.168.81.227:9200/_snapshot/backup_test/snapshot_1/_status?pretty'