注册或更新快照存储库
1.0 版引入
您可以使用快照 API 注册新的存储库以存储快照,或更新现有存储库的信息。
快照存储库有两种类型
-
文件系统(
fs
):有关创建fs
存储库的说明,请参阅注册共享文件系统存储库。 -
Amazon 简单存储服务 (Amazon S3) 存储桶(
s3
):有关创建s3
存储库的说明,请参阅注册 Amazon S3 存储库。
有关创建存储库的说明,请参阅注册存储库。
端点
POST /_snapshot/<repository>/
PUT /_snapshot/<repository>/
路径参数
参数 | 数据类型 | 描述 |
---|---|---|
存储库 | 字符串 | 存储库名称 |
请求参数
请求参数取决于存储库的类型:fs
或 s3
。
通用参数
下表列出了 fs
和 s3
存储库均可使用的参数。
请求字段 | 描述 |
---|---|
prefix_mode_verification | 启用时,会将随机种子的哈希值添加到前缀以进行存储库验证。对于启用远程存储的集群,您可以将 setting.prefix_mode_verification 设置添加到所提供存储库的节点属性中。此字段适用于新旧存储库。可选。 |
shard_path_type | 控制分片级 blob 的路径结构。支持的值为 FIXED 、HASHED_PREFIX 和 HASHED_INFIX 。有关每个值的更多信息,请参阅shard_path_type 值/。默认为 FIXED 。可选。 |
shard_path_type 值
shard_path_type
设置中支持以下值
FIXED
:保持现有分层路径结构,例如<ROOT>/<BASE_PATH>/indices/<index-id>/0/<SHARD_BLOBS>
。HASHED_PREFIX
:为每个唯一分片 ID 在路径开头添加哈希前缀,例如<ROOT>/<HASH-OF-INDEX-ID-AND-SHARD-ID>/<BASE_PATH>/indices/<index-id>/0/<SHARD_BLOBS>
。HASHED_INFIX
:为每个唯一分片 ID 在基路径后附加哈希前缀,例如<ROOT>/<BASE-PATH>/<HASH-OF-INDEX-ID-AND-SHARD-ID>/indices/<index-id>/0/<SHARD_BLOBS>
。使用的哈希方法是FNV_1A_COMPOSITE_1
,它使用FNV1a
哈希函数并生成自定义编码的 64 位哈希值,该值可很好地与大多数远程存储选项配合使用。FNV1a
取最高 6 位创建 URL 安全的 Base64 字符,取接下来的 14 位创建二进制字符串。
fs 存储库
请求字段 | 描述 |
---|---|
location | 用于快照的文件系统目录,例如文件服务器或 Samba 共享的挂载目录。必须可由所有节点访问。必填。 |
chunk_size | 在快照操作期间将大文件拆分为块(例如 64mb 、1gb ),这对于云存储提供商很重要,而对于共享文件系统则不那么重要。默认为 null (无限制)。可选。 |
compress | 是否压缩元数据文件。此设置不影响数据文件,数据文件可能已根据您的索引设置进行了压缩。默认为 false 。可选。 |
max_restore_bytes_per_sec | 快照恢复的最大速率。默认为每秒 40 MB(40m )。可选。 |
max_snapshot_bytes_per_sec | 快照生成的最大速率。默认为每秒 40 MB(40m )。可选。 |
remote_store_index_shallow_copy | 确定是否将远程存储索引的快照捕获为浅拷贝。默认为 false 。 |
shallow_snapshot_v2 | 确定是否将远程存储索引的快照捕获为浅拷贝 v2。默认为 false 。 |
readonly | 存储库是否为只读。在从一个集群(注册时"readonly": false )迁移到另一个集群(注册时"readonly": true )时很有用。可选。 |
s3 存储库
请求字段 | 描述 |
---|---|
base_path | 您希望存储快照的存储桶内路径(例如 my/snapshot/directory )。可选。如果未指定,快照将存储在 S3 存储桶根目录中。 |
bucket | S3 存储桶的名称。必填。 |
buffer_size | 超出此阈值后,块(chunk_size 大小)应被拆分为片段(buffer_size 大小)并使用不同的 API 发送到 S3。默认为两个值中较小的一个:100 MB 或 Java 堆的 5%。有效值介于 5mb 和 5gb 之间。我们不建议更改此选项。 |
canned_acl | S3 有多个预设 ACL,repository-s3 插件可以在 S3 中创建对象时将其添加到对象中。默认为 private 。可选。 |
chunk_size | 在快照操作期间将文件拆分为块(例如 64mb 、1gb ),这对于云存储提供商很重要,而对于共享文件系统则不那么重要。默认为 1gb 。可选。 |
client | 指定客户端设置时(例如 s3.client.default.access_key ),您可以使用 default 以外的字符串(例如 s3.client.backup-role.access_key )。如果您使用了备用名称,请更改此值以匹配。默认和推荐值为 default 。可选。 |
compress | 是否压缩元数据文件。此设置不影响数据文件,数据文件可能已根据您的索引设置进行了压缩。默认为 false 。可选。 |
disable_chunked_encoding | 禁用分块编码以与某些存储服务兼容。默认为 false 。可选。 |
max_restore_bytes_per_sec | 快照恢复的最大速率。默认为每秒 40 MB(40m )。可选。 |
max_snapshot_bytes_per_sec | 快照生成的最大速率。默认为每秒 40 MB(40m )。可选。 |
readonly | 存储库是否为只读。在从一个集群(注册时"readonly": false )迁移到另一个集群(注册时"readonly": true )时很有用。可选。 |
remote_store_index_shallow_copy | 确定是否将远程存储索引的快照捕获为浅拷贝。默认为 false 。 |
shallow_snapshot_v2 | 确定是否将远程存储索引的快照捕获为浅拷贝 v2。默认为 false 。 |
storage_class | 指定快照文件的 S3 存储类别。默认为 standard 。请勿使用 glacier 和 deep_archive 存储类别。可选。 |
server_side_encryption_type | 指定 S3 服务器端加密类型。支持的值包括 AES256 (SSE-S3)、aws:kms (SSE-KMS)和 bucket_default (存储桶默认加密)。默认为 bucket_default 。 |
server_side_encryption_kms_key_id | 指定当通过设置 aws:kms 加密类型选择 S3 SSE-KMS 时要使用的 AWS 密钥管理服务 (AWS KMS) 密钥。如果 server_side_encryption_type 设置为 aws:kms ,则此为必填项。 |
server_side_encryption_bucket_key_enabled | 指定在使用 S3 SSE-KMS 时是否应使用 S3 Bucket Keys。可选。 |
server_side_encryption_encryption_context | 指定在使用 S3 SSE-KMS 时应使用的任何其他加密上下文。此设置值必须格式化为 JSON 对象。可选。 |
expected_bucket_owner | 指定预期的 S3 存储桶所有者的 AWS 账户 ID。此设置可用于验证存储桶所有权。可选。 |
对于 base_path
参数,在输入 S3 存储桶详细信息时,请勿输入 s3://
前缀。只需存储桶的名称。
从 OpenSearch 3.1.0 开始,server_side_encryption
设置已移除。S3 将服务器端加密作为所有 S3 存储桶的基本加密级别。由于此功能无法禁用,此值存储库设置无效。有关更多信息,请参阅使用服务器端加密保护数据。
示例请求
文件系统
以下示例注册了一个 fs
仓库,使用本地目录 /mnt/snapshots
作为 location
PUT /_snapshot/my-fs-repository
{
"type": "fs",
"settings": {
"location": "/mnt/snapshots"
}
}
S3
以下请求注册了一个新的 S3 仓库,名为 my-opensearch-repo
,位于名为 my-open-search-bucket
的现有存储桶中。默认情况下,所有快照都存储在 my/snapshot/directory
中
PUT /_snapshot/my-opensearch-repo
{
"type": "s3",
"settings": {
"bucket": "my-open-search-bucket",
"base_path": "my/snapshot/directory"
}
}
以下请求注册了一个新的 S3 仓库,名为 my-opensearch-repo
,位于名为 my-open-search-bucket
的现有存储桶中。默认情况下,所有快照都存储在 my/snapshot/directory
中。此外,此仓库配置为使用 SSE-KMS,并且预期的存储桶所有者 AWS 账户 ID 为 123456789000
。
PUT /_snapshot/my-opensearch-repo
{
"type": "s3",
"settings": {
"bucket": "my-open-search-bucket",
"base_path": "my/snapshot/directory",
"server_side_encryption_type": "aws:kms",
"server_side_encryption_kms_key_id": "arn:aws:kms:us-east-1:123456789000:key/kms-key-id",
"server_side_encryption_encryption_context": "{\"additional-enc-ctx\": \"sample-context\"}",
"expected_bucket_owner": "123456789000",
}
}
'
示例响应
成功后,将返回以下 JSON 对象
{
"acknowledged": true
}
要验证仓库是否已注册,请使用 获取快照仓库 API,将仓库名称作为 repository
路径参数传递。