Elasticsearch备份和恢复的基本流程
一、备份流程
(一)注册存储库(Repository)
- 选择存储库类型
- Elasticsearch支持多种存储库类型用于备份,常见的有本地文件系统(
fs
)、共享文件系统(如NFS,类型也是fs
)、云存储(如repository - s3
用于Amazon S3存储等)。
- Elasticsearch支持多种存储库类型用于备份,常见的有本地文件系统(
- 注册本地文件系统存储库示例(以API方式)
- 使用Elasticsearch的REST API进行注册。例如,要注册一个名为
my_backup_repository
的本地文件系统存储库,请求如下:
PUT /_snapshot/my_backup_repository { "type": "fs", "settings": { "location": "/path/to/backup/directory" } }
- 这里指定了存储库类型为
fs
(本地文件系统),并设置了备份文件的存储位置(/path/to/backup/directory
)。
- 使用Elasticsearch的REST API进行注册。例如,要注册一个名为
- 验证存储库注册
- 通过以下API查询来验证存储库是否注册成功:
GET /_snapshot/my_backup_repository
(二)创建快照(Snapshot)
- 全量快照
- 假设要对名为
my_index
的索引创建全量快照,名为my_snapshot
,可以使用如下API:
PUT /_snapshot/my_backup_repository/my_snapshot { "indices": "my_index", "ignore_unavailable": true, "include_global_state": false }
indices
指定要备份的索引;ignore_unavailable
表示如果索引不可用则忽略;include_global_state
设置为false
表示不包含集群的全局状态(如果只想备份索引数据)。
- 假设要对名为
- 监控快照进度
- 通过以下API查询快照的创建进度:
GET /_snapshot/my_backup_repository/my_snapshot/_status
- 它会返回快照的状态信息,包括已完成的百分比、备份的字节数等。
二、恢复流程
(一)验证存储库和快照可用性
- 查询存储库中的快照列表并检查状态
- 在恢复之前,需要确保存储库和要恢复的快照是可用的。通过以下API查询:
GET /_snapshot/my_backup_repository/_all
- 确保要恢复的快照状态为
SUCCESS
或其他表示成功备份的状态。
(二)执行恢复操作
- 恢复单个索引示例
- 要从快照
my_snapshot
中恢复索引my_index
,使用如下API:
POST /_snapshot/my_backup_repository/my_snapshot/_restore { "indices": "my_index", "ignore_unavailable": true, "include_global_state": false }
- 参数含义与创建快照时类似,
ignore_unavailable
表示忽略不可用的索引部分,include_global_state
如果设置为false
则不恢复全局状态信息。
- 要从快照
- 恢复整个集群(如果备份了整个集群数据)
- 若要恢复整个集群数据(假设备份中包含了全局状态信息),可以使用类似的API请求,但不指定具体的索引:
POST /_snapshot/my_backup_repository/my_snapshot/_restore { "include_global_state": true }
(三)监控恢复进度
- 查询恢复进度
- 通过以下API查询恢复的进度:
GET /_restore/status
- 它会返回恢复操作的状态信息,如已恢复的索引数量、正在恢复的分片数量等。