1.说明
快照是从正在运行的Elasticsearch集群中获取的备份。您可以对整个集群进行快照,包括其所有数据流和索引。您还可以仅对集群中的特定数据流或索引进行快照。
创建快照之前,必须先注册快照存储库。
快照可以存储在本地存储库中,也可以存储在远程存储库中。远程存储库可以驻留在Amazon S3、HDFS、Microsoft Azure、Google Cloud Storage以及存储库插件支持的其他平台上。
Elasticsearch以增量方式获取快照:快照过程只将未被早期快照复制的数据复制到存储库中,避免不必要的工作或存储空间重复。这意味着您可以安全地以最小的开销频繁地拍摄快照。这种增量只适用于单个存储库,因为存储库之间没有共享数据。快照在逻辑上也是相互独立的,即使在单个存储库中也是如此:删除快照不会影响任何其他快照的完整性。
可以将快照恢复到正在运行的集群,默认包含快照中的所有数据流和索引。但是,您可以选择仅从快照恢复集群状态或特定数据流或索引。
通过快照生命周期管理,可以实现快照的自动生成和管理。
2.注册存储库
如果向多个集群注册相同的快照存储库,则只有一个集群对该存储库具有写访问权限。连接到该存储库的所有其他集群都应该将该存储库设置为只读模式
快照格式可能会在不同的主要版本之间发生变化,因此,如果不同版本上的集群试图向同一个存储库写入数据,那么一个版本写入的快照可能对另一个版本不可见,并且存储库可能会损坏。虽然将存储库设置为除一个集群之外的所有集群的只读,但它应该适用于因一个主要版本而不同的多个集群,但这种配置不受支持
-
首先需要设置共享文件系统(nfs)
参考centos7:centos7nfs配置共享文件夹
设置文件夹elasticsearch用户权限:chown elasticsearch:elasticsearch-R /data/backups/
-
修改elasticsearch.yml本地存储路径:
配置完成需要重启节点,path: repo: - /data/backups
-
通过api创建存储库:
PUT /_snapshot/my_backup { "type": "fs", "settings": { "location": "/data/backups" } }
-
查询存储库信息:
GET /_snapshot/my_backup
3.创建快照
PUT /_snapshot/my_backup/snapshot_2?wait_for_completion=true
{
"indices": "data_stream_1,index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false,
"metadata": {
"taken_by": "kimchy",
"taken_because": "backup before upgrading"
}
}
-
wait_for_completion参数指定请求是否应该在快照初始化后立即返回(默认值),还是等待快照完成。在快照初始化期间,有关以前所有快照的信息被加载到内存中,这意味着在大型存储库中,即使wait_for_completion参数设置为false,该请求也可能需要几秒钟(甚至几分钟)才能返回。
-
ignore_unavailable:
将其设置为true将导致在创建快照时忽略不存在的数据流和索引。默认情况下,如果未设置ignore_unavailable选项,并且缺少数据流或索引,则快照请求将失败 -
include_global_state设置为false,可以防止将集群全局状态存储为快照的一部分。
全局集群状态包括集群的索引模板,例如匹配数据流的索引模板。如果您的快照包含数据流,我们建议将全局状态存储为快照的一部分。这允许您稍后恢复数据流所需的任何模板。
默认情况下,如果参与快照的一个或多个索引没有所有主分片可用,则整个快照将失败。您可以通过将partial设置为true来更改此行为。expand_wildcards选项可用于控制快照中是否包含隐藏索引和关闭索引,默认为打开索引和隐藏索引。
使用元数据字段将任意元数据附加到快照,例如谁拍摄了快照、为什么拍摄快照或任何其他可能有用的数据。 -
快照名称可以使用日期数学表达式自动派生,与创建新索引时类似。特殊字符必须是URI编码的。
PUT /_snapshot/my_backup/<snapshot-{now/d}> PUT /_snapshot/my_backup/%3Csnapshot-%7Bnow%2Fd%7D%3E
日期表达式:https://www.elastic.co/guide/en/elasticsearch/reference/7.15/date-math-index-names.html
4.恢复快照
POST /_snapshot/my_backup/snapshot_2/_restore
{
"indices": "data_stream_1,index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1",
"include_aliases": false
}
-
如果恢复的索引indices在集群中存在,通过rename_pattern,rename_replacement重命名索引进行恢复。如果不存在直接使用indices索引名称恢复
-
默认情况下,include_global_state为false,表示不恢复快照的集群状态和特性状态。
如果为true,则恢复操作将集群中的遗留索引模板与快照中包含的模板合并,替换任何名称与快照中的模板匹配的现有索引模板。它完全删除集群中存在的所有持久设置、非遗留索引模板、摄取管道和ILM生命周期策略,并用快照中的相应项替换它们。 -
根据appendReplacement逻辑,rename_pattern和rename_replacement选项还可用于使用支持引用原始文本的正则表达式在恢复时重命名数据流和索引。
如果重命名已恢复的数据流,其支持索引也会重命名。例如,将日志数据流重命名为restored-logs,则备份索引。ds-logs-2099.03.09-000005将重命名为。ds-restored-logs-2099.03.09-000005。
如果重命名已恢复的流,请确保索引模板与新流名称匹配。如果没有与流匹配的索引模板,它就不能滚转或创建新的备用索引。 -
为了防止别名与其关联的数据流和索引一起恢复,请将include_aliases设置为false。
5.使用kibana备份和还原
- 进入首页-备份还原
- 注册存储库
- 创建策略
指定保留天数
- 还原快照