如何在 Elasticsearch 集群中进行数据备份和恢复?
Elasticsearch 集群中的数据备份与恢复
1 概述
1.1 1 Elasticsearch 集群的数据备份
Elasticsearch (ES) 是一套开源的分布式搜索和分析引擎,可以结合大规模数据提供快速搜索功能,适用于各种场景,如日志分析、实时分析和全文搜索等,也是实时数据分析和搜索系统中的首选系统。 但是,随着商业环境变化和负责任的运维操作,数据备份和恢复就成为了不可或缺的一部分。由于 Elasticsearch 集群在索引和数据存储方面的一致性要求,备份和恢复将成为注意的重点。
1.2 2 相关概念
ES 集群的数据备份与恢复涉及其他概念:
- ES 节点:指 ES 集群中的服务器,用于存储索引和数据。
- 索引:指搜索的数据模型。它由文档的映射和属性记录的数据组成,每个文档可以理解为属性/值对的数据实体,当我们使用搜索引擎查询时,我们会看到查询结果中每个文档的索引名。
- 数据:指索引中的文档。索引中的数据存储在每个节点中,允许 ES 查询索引和数据。
2 数据备份
2.1 1 备份索引
要备份 ES 集群中所有节点的索引数据,可以使用 Elasticsearch 的 snapshot 功能。可以通过备份索引,将 ES 集群中每个节点中的所有索引数据都复制一份,存放在外部备份介质上。
2.2 2 定义备份位置
备份文件既可以放在本地也可以放在远程位置,比如 Amazon S3、Google Cloud Storage 或者 Microsoft Azure Cloud Storage 等,用户可以根据自己的应用场景选择最佳的备份位置。
2.3 3 创建备份文件
使用 POST 方式对 ES 集群进行备份操作,发出使用 _snapshot 索引发出一个 POST 请求,即可实现备份文件的的创建,如 POST _snapshot/my-repository
2.4 4 创建 Snapshot
会为每个备份操作创建一个抽象概念称为 snapshot,使用 Snapshot/Create API 可以进行备份创建,它可用于指定多个参数,如需要备份的索引,备份位置等 。
3 数据恢复
3.1 1 检索备份信息
要恢复 ES 集群中的数据,通常需要查询备份信息,可以使用 Snapshot/Get API 来检索特定的备份信息:
GET _snapshot/my-repository/snapshot-001
3.2 2 恢复索引
使用 Snapshot/Restore API,用于为 ES 集群恢复特定索引,可以指定要恢复的索引,以及要恢复的 snapshot 名称,如下:
POST _snapshot/my-repository/snapshot-001/_restore
{
"indices": "index-1",
"include_global_state": false
}
以上的恢复操作将会从索引备份文件中恢复索引 index-1 的相关数据, include_global_state 参数表示,是否恢复集群级别的元数据,也就是 cluster-state 数据。
3.3 3 按节点恢复
有时候用户需要恢复某节点上的索引数据,这时候可以使用 Restore API 的特殊参数 include_aliases
,来从备份文件中恢复某个节点的索引数据,如下:
POST _snapshot/my-repository/snapshot-001/_restore
{
"indices": "index-1",
"include_aliases": true,
"include_global_state": false
}
以上的恢复操作将从指定的索引备份文件中恢复 index-1 索引,且仅恢复节点的数据,不恢复集群级别的元数据。
4 结论
本文介绍了 ES 集群中数据备份与恢复的步骤,提出了备份和恢复索引并发送备份文件到远程位置、检索备份信息以及恢复索引和按节点恢复等备份操作,帮助用户快速的完成 ES 集群的备份与恢复工作,同时保证数据的一致性和完整性。