关于 Elasticsearch 快照
默认情况下,GitHub Enterprise Server Backup Utilities 和 GitHub Enterprise Server Backup Service 通过直接从磁盘复制文件来备份搜索索引数据。 此方法不遵循 Elasticsearch 自己的建议,可能会消耗大量备份设备存储,并且存在损坏备份索引的风险。
作为一种可选的替代方案,你的 GitHub Enterprise Server 实例 支持 Elasticsearch 内置的增量快照与恢复功能。 配置支持的云存储提供程序并启用快照备份策略时:
ghe-backup在配置的云存储帐户中创建搜索索引数据的增量快照。 增量快照比完整备份更快,尤其是在后续备份时。ghe-restore如果存在与目标实例版本匹配的 GitHub Enterprise Server 快照,则从云存储帐户还原搜索索引数据。- 快照按每个 GitHub Enterprise Server 补丁版本相互隔离,从而能够在不同版本之间进行更安全的回滚。
此功能需要选择加入。 如果未配置快照存储库, 你的 GitHub Enterprise Server 实例 请使用现有的基于磁盘的方法继续备份搜索索引数据。
先决条件
- 支持的云存储提供程序:Azure Blob 存储、Amazon S3 或 Google 云存储(或与其中一个 API 兼容的服务)。
- 计划用作快照存储库的存储容器或存储桶。 必须自行创建此容器或存储桶。 GitHub Enterprise Server 不会为你创建它,如果容器或存储桶不存在,存储库注册将失败。
配置快照存储提供程序
使用 ghe-config SSH 配置以下设置。 有关详细信息,请参阅“访问管理 shell (SSH)”。
你将应用配置,将快照存储库注册到 Elasticsearch。 该存储库名为 search_index_snapshots-VERSION,其中 VERSION 是当前的 GitHub Enterprise Server 发布版本。
Azure Blob 存储服务
-
设置以下机密:
ghe-config secrets.elasticsearch.snapshot-provider azure ghe-config secrets.elasticsearch.snapshot.azure.container YOUR-CONTAINER ghe-config secrets.elasticsearch.snapshot.azure.account-name YOUR-STORAGE-ACCOUNT ghe-config secrets.elasticsearch.snapshot.azure.account-key YOUR-ACCOUNT-KEY(可选)设置自定义 Blob 终结点后缀(默认值为
core.windows.net):ghe-config secrets.elasticsearch.snapshot.azure.endpoint-suffix YOUR-ENDPOINT-SUFFIX -
运行配置适用。
ghe-config-apply
Amazon S3
-
设置以下机密:
ghe-config secrets.elasticsearch.snapshot-provider s3 ghe-config secrets.elasticsearch.snapshot.bucket-name YOUR-BUCKET-NAME ghe-config secrets.elasticsearch.snapshot.service-url YOUR-SERVICE-URL ghe-config secrets.elasticsearch.snapshot.region YOUR-AWS-REGION ghe-config secrets.elasticsearch.snapshot.access-key-id YOUR-ACCESS-KEY-ID ghe-config secrets.elasticsearch.snapshot.access-secret YOUR-ACCESS-SECRET对于服务 URL,请使用您的 S3 端点,例如
https://s3.us-east-1.amazonaws.com。 -
运行配置适用。
ghe-config-apply
Google 云存储
-
创建可访问存储桶的 JSON 服务帐户密钥,然后将其编码为 base64。
base64 -w0 service-account.json -
设置以下机密:
ghe-config secrets.elasticsearch.snapshot-provider gcs ghe-config secrets.elasticsearch.snapshot.gcs.bucket YOUR-BUCKET-NAME ghe-config secrets.elasticsearch.snapshot.gcs.credentials YOUR-BASE64-ENCODED-CREDENTIALS -
运行配置适用。
ghe-config-apply
验证注册
配置应用完成后,确认快照存储库已注册。
curl -k "http://127.0.0.1:9200/_snapshot/search_index_snapshots-$(ghe-version -v)/_status"
如果缺少所需的机密,则注册存储库时,配置应用会失败。 更新机密并重新运行 ghe-config-apply 以重试。
在备份和恢复期间启用快照
配置存储提供程序会注册快照存储库,但还必须启用快照备份策略,以便ghe-backup``ghe-restore自动使用它。
-
GitHub Enterprise Server Backup Service: 在设备上使用
ghe-config设置策略。ghe-config backup.es-backup-strategy snapshot -
GitHub Enterprise Server Backup Utilities: 在备份主机上的
backup.config文件中设置该策略。GHE_ES_BACKUP_STRATEGY=snapshot默认值为
rsync,保留现有的基于磁盘的备份行为。 GitHub Enterprise Server Backup Utilities 仅在本地存储快照元数据;快照内容保留在配置的云存储中。
如果未设置备份策略,仍可以手动管理快照存储库,但ghe-backup``ghe-restore将继续使用基于磁盘的方法。
手动管理快照
可以使用以下命令直接管理 Elasticsearch 快照。 使用 -h 标志运行任何命令以获取使用情况信息。
| 命令 | Description |
|---|---|
ghe-es-create-snapshot | 在配置的存储库中创建新快照。 |
ghe-es-list-snapshots | 列出快照存储库或存储库中的快照。 |
ghe-es-restore-snapshot | 从快照还原搜索索引。 |
提示
对于例程备份和还原,请直接使用 GitHub Enterprise Server Backup Utilities 或 GitHub Enterprise Server Backup Service 代替这些命令。 备份工具将 Elasticsearch 快照与实例的其余数据进行协调,以确保一致的备份或还原。 仅当需要独立于完整实例备份或还原管理搜索索引快照时,才使用手动命令。
从较早版本中恢复快照
可以将早期 GitHub Enterprise Server 版本创建的快照还原到更高版本。 无法将快照从更高版本还原到早期版本。
-
列出早期版本的可用快照。
ghe-es-list-snapshots -v 3.14.0 -
还原您想要的快照。
ghe-es-restore-snapshot -v 3.14.0 -s SNAPSHOT-NAME
Elasticsearch 会自动将还原的索引升级到当前版本的格式。
管理快照存储
Elasticsearch 快照是增量快照,但云存储帐户仍可随时间推移累积旧快照。 为了避免存储增长不受限制,请使用存储提供程序配置生命周期策略,以自动删除早于保留要求的快照。 有关详细信息,请参阅提供商的文档: