简书 溪渠
转载请注明原创出处,谢谢!
如果读完觉得有收获的话,欢迎点赞加关注
1. 安装elasticsearch-repository-hdfs插件
如果需要使用hdfs作为snapshot的备份地址,需要先安装elasticsearch-repository-hdfs插件。
- 在线安装
./plugin install elasticsearch/elasticsearch-repository-hdfs/2.1.1
- 离线安装
从插件镜像地址下载插件压缩包,然后执行
./plugin install file:///elasticsearch-repository-hdfs-2.2.0-rc1-hadoop2.zip
目前2.1.1版本对应的插件无法使用,要使用2.2.0-rc1版本,所有节点都需要安装该插件。
在elasticsearch.yml中配置如下保证elasticsearch可以对hdfs进行读写。
security.manager.enabled: false
2. 配置仓库地址
一般我们需要在Elasticsearch集群所有节点的elasticsearch.yml文件中配置数据备份的仓库地址,如下:
path.repo: ["/opt/es-snapshot-repo"]
3. 注册仓库
Elasticsearch支持多种仓库注册方式:
- S3 repository support
- HDFS repository support in Hadoop environments
- Azure storage repositories
- Google Cloud Storage repositories
1. 使用file system注册
curl -XPUT 'http://localhost:9200/_snapshot/backup' -d
'{
"type": "fs",
"settings": {
"location": "/opt/es-snapshot-repo",
"compress": true
}
}'
2. 使用hdfs注册
uri指定了Hadoop的NameNode地址
curl -XPUT 'http://localhost:9200/_snapshot/my_hdfs_repository' -d
'{
"type": "hdfs",
"settings": {
"uri": "hdfs://namenode:9000/",
"path": "elasticsearch/respositories/my_hdfs_repository"
}
}'
4. 创建snapshot
Elasticsearch创建数据快照是以index为单位进行的,可以使用缺省模式默认创建所有index的副本,也可以进行指定。
对所有index创建snapshot:
curl -XPUT 'http://localhost:9200/_snapshot/backup/snapshot_1?wait_for_completion=true'
指定index创建snapshot:
curl -XPUT 'http://localhost:9200 /_snapshot/backup/snapshot_2' -d
{
"indices": "index_name1,index_name2",
"ignore_unavailable": true,
"include_global_state": false
}
快照创建时不会影响搜索查询,并且快照创建过程启动后,新的数据不会被记录到快照中,同一时刻只能有一份快照被创建。
5. 删除snapshot
删除指定快照
curl -XDELETE 'http://172.24.63.16:9200/_snapshot/backup/snapshot_1?pretty'
删除整个仓库
curl -XDELETE 'http://172.24.63.16:9200/_snapshot/backups?pretty'
删除操作还可以终止一个正在进行的快照备份。
6. 恢复snapshot
在两个不同的ES集群中迁移恢复数据时,我们需要保证一些条件。
- 新集群版本应该比创建snapshot的集群版本更高
- 新集群应该有足够的空间存储快照中的所有index,当然也可以指定部分index恢复以适应小集群
- 如果旧集群中有index的shard分配到指定的节点上,那么新集群恢复时也会遵循此规则,因此如果新集群不包含指定节点时,这一部分index将无法恢复
恢复指令:
curl -XPOST 'http://localhost:9200/_snapshot/backup/snapshot_1/_restore?pretty'
溪渠
2017 年 03月 13日