概要:
Elasticsearch也提供了备份集群中索引数据的策略——snapshot API.它会备份整个集群的当前状态和数据,并保存到集群中各个节点共享的仓库中。这个备份的进程是增量备份的,在第一次备份的基础上进行的第二次备份只备份新变化的数据。
创建elasticsearch快照分为3步,
- 多节点的集群需要在每个节点的相同位置挂载同一个共享文件夹。每个节点都必须对能够访问共享文件夹且有rw权限。
- 为每个节点的elasticsearch.yml文件中添加path.repo。 path.repo: /mnt/es_backup 并重启节点。
- 创建集群的快照仓库。
- 创建快照
- 恢复index
创建共享文件夹。
使用nfs共享文件夹。
注意:
1、共享文件夹必须修改权限,chmod 777 ,
2、client用户访问id,在server中有,且对共享文件夹有rw权限。
在server端安装nfs, 修改/etc/exports文件。
/data/ES_snapshot 10.9.125.210/16(rw,sync,all_squash) 10.19.48.3/16(rw,sync,all_squash) 10.19.72.218/16(rw,sync,all_squash)
3、在每个节点添加path.repo 并重启节点。
4、为集群创建快照仓库
curl -XPUT http://localhost:9200/_snapshot/my_backup -d ‘{"type": "fs", "settings": {"location": "/mnt/es", "compress": true}}‘
或
put /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/mnt/ES_backup",
"compress": true,
"max_snapshot_bytes_per_sec": "50mb",
"max_restore_bytes_per_sec": "50mb"
}
}
4、为集群中index创建快照
PUT /_snapshot/my_backup/logstash-2017-01-07?pretty
{
"indices": "logstash-iis-2017-01-07,logstash-httperr-2017-01-07",
"ignore_unavailable": true,
"include_global_state": false
}
上面的代码会将所有正在运行的索引,备份到my_backup仓库下一个叫snapshot_1的快照中。上面的api会立刻返回,然后备份工作在后台运行。如果你想api同步执行,可以加wait_for_completion标志:
PUT http://127.0.0.1:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true
5、查看快照
get _snapshot/my_backup/logstash-2017-01-07
{
"snapshots": [
{
"snapshot": "logstash-2017-01-07",
"uuid": "0XM7X-HcR4u9Ou7-Gjzj5w",
"version_id": 5000299,
"version": "5.0.2",
"indices": [
"logstash-iis-2017-01-07",
"logstash-httperr-2017-01-07"
],
"state": "SUCCESS",
"start_time": "2017-01-09T09:04:03.983Z",
"start_time_in_millis": 1483952643983,
"end_time": "2017-01-09T09:05:37.524Z",
"end_time_in_millis": 1483952737524,
"duration_in_millis": 93541,
"failures": [],
"shards": {
"total": 10,
"failed": 0,
"successful": 10
}
}
]
}
如果要查看所有索引的信息,使用如下api:
GET http://127.0.0.1:9200/_snapshot/my_backup/_all
另外还有个一api可以看到更加详细的信息:
GET http://127.0.0.1:9200/_snapshot/my_backup/snapshot_3/_status
6、快照恢复
post /_snapshot/my_backup/logstash-2017-01-07/_restore
此api额外参数,
POST http://127.0.0.1:9200/_snapshot/my_backup/snapshot_1/_restore
{
"indices": "index_1",
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}
参数indices 设置只恢复index_1索引,参数rename_pattern 和rename_replacement 用来正则匹配要恢复的索引,并且重命名。和备份一样,api会立刻返回值,然后在后台执行恢复,使用wait_for_completion 标记强制同步执行。
另外可以使用下面两个api查看状态:
GET http://127.0.0.1:9200/_recovery/restored_index_3
GET http://127.0.0.1:9200/_recovery/
如果要取消恢复过程(不管是已经恢复完,还是正在恢复),直接删除索引即可:
DELETE http://127.0.0.1:9200/restored_index_3
原文地址:http://blog.51cto.com/10639817/2089750
时间: 2024-11-09 10:18:18