Sobre instantâneos do Elasticsearch
Por padrão, GitHub Enterprise Server Backup Utilities e GitHub Enterprise Server Backup Service faça backup de dados de índice de pesquisa copiando arquivos diretamente do disco. Essa abordagem não segue as próprias recomendações do Elasticsearch, pode consumir uma grande quantidade de armazenamento do dispositivo de backup e traz algum risco de corromper os índices de backup.
Como alternativa opcional, sua instância do GitHub Enterprise Server oferece suporte à funcionalidade nativa de snapshot incremental e restauração do Elasticsearch. Ao configurar um provedor de armazenamento em nuvem com suporte e habilitar a estratégia de backup de instantâneo:
ghe-backupcria um snapshot incremental dos dados do índice de pesquisa na conta de armazenamento em nuvem configurada. Instantâneos incrementais são mais rápidos do que uma cópia completa, especialmente nos backups subsequentes.ghe-restorerestaura os dados do índice de pesquisa da sua conta de armazenamento na nuvem, se existir um instantâneo que corresponda à versão GitHub Enterprise Server da instância de destino.- Os instantâneos são isolados para cada versão de patch GitHub Enterprise Server, o que permite reversões mais seguras entre versões.
Esse recurso é ativado mediante consentimento. Se você não configurar um repositório de instantâneos, sua instância do GitHub Enterprise Server continuará a fazer backup de dados de índice de pesquisa usando o método baseado em disco existente.
Prerequisites
- Um provedor de armazenamento em nuvem com suporte: Azure Armazenamento de Blobs, Amazon S3 ou Google Cloud Storage (ou um serviço compatível com uma dessas APIs).
- O contêiner de armazenamento ou bucket que você planeja usar como o repositório de instantâneos. Você deve criar esse contêiner ou bucket por conta própria. GitHub Enterprise Server não o criará para você e o registro do repositório falhará se o contêiner ou bucket ainda não existir.
Configurando um provedor de armazenamento de instantâneos
Defina as seguintes configurações usando ghe-config por SSH. Para obter mais informações, consulte Acessar o shell administrativo (SSH).
Você aplicará a configuração para registrar o repositório de instantâneos com o Elasticsearch. O repositório se chama search_index_snapshots-VERSION, em que VERSION é a versão atual de lançamento do GitHub Enterprise Server.
Armazenamento de Blobs do Azure
-
Defina os seguintes segredos:
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-KEYOpcionalmente, defina um sufixo personalizado de endpoint de blob (o padrão é
core.windows.net):ghe-config secrets.elasticsearch.snapshot.azure.endpoint-suffix YOUR-ENDPOINT-SUFFIX -
A configuração de execução se aplica.
ghe-config-apply
Amazon S3
-
Defina os seguintes segredos:
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-SECRETPara a URL do serviço, use seu endpoint do S3, por exemplo
https://s3.us-east-1.amazonaws.com. -
A configuração de execução se aplica.
ghe-config-apply
Cloud Storage do Google
-
Crie uma chave de conta de serviço JSON com acesso ao bucket e, em seguida, codifique-a como base64.
base64 -w0 service-account.json -
Defina os seguintes segredos:
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 -
A configuração de execução se aplica.
ghe-config-apply
Verificando o registro
Após a aplicação da configuração ser concluída, confirme se o repositório de snapshots foi registrado.
curl -k "http://127.0.0.1:9200/_snapshot/search_index_snapshots-$(ghe-version -v)/_status"
Se um segredo necessário estiver ausente, a aplicação da configuração falhará ao registrar o repositório. Atualize os segredos e execute ghe-config-apply novamente para tentar novamente.
Ativando instantâneos durante o backup e a recuperação
Configurar um provedor de armazenamento registra o repositório de instantâneos, mas você também deve habilitar a estratégia de backup por snapshot para que ghe-backup e ghe-restore a utilizem automaticamente.
-
GitHub Enterprise Server Backup Service: Defina a estratégia usando
ghe-configno dispositivo.ghe-config backup.es-backup-strategy snapshot -
GitHub Enterprise Server Backup Utilities: defina a estratégia em seu
backup.configarquivo no host de backup.GHE_ES_BACKUP_STRATEGY=snapshotO valor padrão é
rsync, que preserva o comportamento de backup baseado em disco existente. GitHub Enterprise Server Backup Utilities armazena apenas metadados de instantâneo localmente; O conteúdo do instantâneo permanece no armazenamento em nuvem configurado.
Se você não definir uma estratégia de backup, o repositório de instantâneos ainda poderá ser gerenciado manualmente, mas ghe-backup``ghe-restore continuará a usar o método baseado em disco.
Gerenciando instantâneos manualmente
Você pode gerenciar instantâneos do Elasticsearch diretamente usando os comandos a seguir. Execute qualquer comando com o -h sinalizador para obter informações de uso.
| Command | Description |
|---|---|
ghe-es-create-snapshot | Cria um novo instantâneo no repositório configurado. |
ghe-es-list-snapshots | Lista repositórios de instantâneos ou instantâneos em um repositório. |
ghe-es-restore-snapshot | Restaura índices de pesquisa de um snapshot. |
Dica
Para backups e restaurações de rotina, use GitHub Enterprise Server Backup Utilities ou GitHub Enterprise Server Backup Service em vez desses comandos diretamente. A ferramenta de backup coordena os snapshots do Elasticsearch com os demais dados da sua instância para garantir um backup ou uma restauração consistentes. Use os comandos manuais somente quando precisar gerenciar instantâneos de índice de pesquisa independentemente de um backup ou restauração de instância completa.
Restaurando um instantâneo de uma versão anterior
Você pode restaurar um instantâneo criado por uma versão anterior GitHub Enterprise Server para uma versão posterior. Você não pode restaurar um instantâneo de uma versão posterior para uma versão anterior.
-
Listar instantâneos disponíveis da versão anterior.
ghe-es-list-snapshots -v 3.14.0 -
Restaure o instantâneo desejado.
ghe-es-restore-snapshot -v 3.14.0 -s SNAPSHOT-NAME
O Elasticsearch atualiza automaticamente os índices restaurados para o formato da versão atual.
Gerenciando o armazenamento de instantâneos
Os instantâneos do Elasticsearch são incrementais, mas sua conta de armazenamento em nuvem ainda pode acumular instantâneos antigos ao longo do tempo. Para evitar o crescimento ilimitado do armazenamento, configure uma política de ciclo de vida com seu provedor de armazenamento para excluir automaticamente snapshots mais antigos do que o período definido pelos seus requisitos de retenção. Para obter mais informações, consulte a documentação do provedor: