快照用于保存运行着的elasticsearch 集群中运行的数据,可以将一个或多个 index 保存到 repository(仓库中),同一个 repo 的不同快照之间的数据是增量添加的,也就是说snap_1 ,之后再创建 snap_2 ,那么snap_2 只保存 snap_1 和 snap_2 之间的增量数据。因此可以比较高效的保存数据了。
保存起来的 snapshot 通过 restore API ,将数据恢复到集群中。
1,定义path.repo
在 elasticsearch.yml 中定义
path.repo , 需要在所有的data、master节点上进行配置,并且如果有多个cluster 配置的是相同的地址,那么只有一个是可写的,其他都是只读的。
这里的位置是同一个地址。
Path.repo 也是支持数组的
2,创建 repository
使用绝对路径
绝对路径必须是 path.repo 的子集
使用相对路径
这里的相对路径是第一个path.repo 的对照。
通过以上方式就创建了 my_fs_backup repo。
3,创建快照
一个 repo 可以包含多个snapshot, 默认是保存全部的 index 和 在后台异步处理。
PUT /_snapshot/my_fs_backup/snapshot_1
如果需要同步 ?wait_for_completion=true
保存特定的 index 使用
PUT /_snapshot/my_fs_backup/snapshot_2?wait_for_completion=true
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false
}
但是一个 repo 不能有相同的 snapshot,
ES支持按时间公式计算出的 snapshot name
4,Restore
全部恢复
指定恢复部分index
还可以在恢复index时设置一个配置