Skip to main content
Skip to content

配置 Elasticsearch 快照

你可以将 你的 GitHub Enterprise Server 实例 配置为使用客户管理的云存储提供程序来执行 Elasticsearch 原生快照和恢复,而不是直接从磁盘复制搜索索引数据。

谁可以使用此功能?

Site administrators can configure Elasticsearch snapshot storage.

关于 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 存储服务

  1. 设置以下机密:

    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
    
  2. 运行配置适用。

    ghe-config-apply
    

Amazon S3

  1. 设置以下机密:

    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

  2. 运行配置适用。

    ghe-config-apply
    

Google 云存储

  1. 创建可访问存储桶的 JSON 服务帐户密钥,然后将其编码为 base64。

    base64 -w0 service-account.json
    
  2. 设置以下机密:

    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
    
  3. 运行配置适用。

    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 版本创建的快照还原到更高版本。 无法将快照从更高版本还原到早期版本。

  1. 列出早期版本的可用快照。

    ghe-es-list-snapshots -v 3.14.0
    
  2. 还原您想要的快照。

    ghe-es-restore-snapshot -v 3.14.0 -s SNAPSHOT-NAME
    

Elasticsearch 会自动将还原的索引升级到当前版本的格式。

管理快照存储

Elasticsearch 快照是增量快照,但云存储帐户仍可随时间推移累积旧快照。 为了避免存储增长不受限制,请使用存储提供程序配置生命周期策略,以自动删除早于保留要求的快照。 有关详细信息,请参阅提供商的文档: