面试题答案
一键面试获取快照信息基本操作步骤
- 注册存储库:
- 使用
PUT _snapshot/{repository}
API来注册一个存储库。例如:
PUT _snapshot/my_backup_repo { "type": "fs", "settings": { "location": "/path/to/backup" } }
- 这里指定了存储库类型为文件系统(
fs
),并设置了存储位置。
- 使用
- 创建快照:
- 使用
PUT _snapshot/{repository}/{snapshot}
API。例如:
PUT _snapshot/my_backup_repo/my_snapshot_1 { "indices": "my_index", "ignore_unavailable": true, "include_global_state": false }
- 此操作指定了要快照的索引(
my_index
),是否忽略不可用的索引(ignore_unavailable
)以及是否包含全局状态(include_global_state
)。
- 使用
- 获取快照信息:
- 使用
GET _snapshot/{repository}/{snapshot}
API来获取特定快照的信息。例如:
GET _snapshot/my_backup_repo/my_snapshot_1
- 这将返回该快照的详细信息,如状态、包含的索引等。
- 使用
关键原理
- 存储原理:
- 基于存储库类型:
- 对于文件系统类型(
fs
)存储库,快照数据以文件的形式存储在指定的文件系统位置。每个索引的数据被分解为多个段文件,这些段文件以及相关的元数据文件被复制到存储库目录下。 - 对于其他类型,如Amazon S3存储库,数据会按照S3的对象存储规则存储,将Elasticsearch的数据对象上传到指定的S3桶中。
- 对于文件系统类型(
- 增量存储:Elasticsearch支持增量快照,它通过记录上次快照后更改的文件来减少存储开销。在创建增量快照时,Elasticsearch会比较当前索引状态与上次快照,仅存储发生变化的段文件。
- 基于存储库类型:
- 索引原理:
- 元数据存储:快照包含了索引的元数据,如索引设置、映射等。这些元数据在恢复时用于重建索引结构。
- 数据恢复映射:在恢复时,Elasticsearch根据快照中的元数据和数据文件,将数据重新映射到新的索引实例中。它会重新创建索引的分片结构,并将存储的段文件数据重新加载到相应的分片,从而恢复索引到快照时的状态。