Skip to main content

Como configurar backups em sua instância usando Utilitários de Backup

Dentro de um plano de recuperação de desastre, é possível proteger os dados de produção no sua instância do GitHub Enterprise Server configurando backups automatizados.

Sobre as opções de backup do GitHub Enterprise Server

O GitHub oferece duas versões para fazer backup de sua instância do GitHub Enterprise Server:

  • GitHub Enterprise Server Backup Utilities: um sistema de backup de código aberto que você instala em um host separado. Para obter mais informações, veja as seguintes abaixo.
  • GitHub Enterprise Server Backup Service (em versão prévia pública): um serviço de backup gerenciado disponível no GitHub Enterprise Server. Consulte AUTOTITLE

Sobre o GitHub Enterprise Server Backup Utilities

O GitHub Enterprise Server Backup Utilities é um sistema de backup que você instala em um host separado, o qual tira instantâneos de backup do sua instância do GitHub Enterprise Server em intervalos regulares por meio de uma conexão de rede SSH segura. É possível usar um instantâneo para reverter uma instância existente do GitHub Enterprise Server para um estado anterior utilizando o host de backup.

Somente os dados adicionados desde o último instantâneo serão transferidos pela rede e ocuparão espaço adicional de armazenamento físico. Para minimizar o impacto no desempenho, os backups são feitos online sob a menor prioridade tanto para CPU quanto para E/S. Não é necessário programar um período de manutenção para fazer backups.

Os lançamentos principais e números de versão do GitHub Enterprise Server Backup Utilities estão alinhados aos lançamentos de recursos do GitHub Enterprise Server. Damos suporte às quatro versões mais recentes de ambos os produtos. Para saber mais, confira AUTOTITLE.

Para obter informações detalhadas sobre recursos, requisitos e uso avançado, confira GitHub Enterprise Server Backup Utilities README na documentação do projeto do GitHub Enterprise Server Backup Utilities.

Pré-requisitos

Para usar o GitHub Enterprise Server Backup Utilities, você deve ter um sistema host separado de sua instância do GitHub Enterprise Server. Para obter detalhes sobre como o sistema deve ser configurado, confira Requisitos no repositório github/backup-utils.

Também é possível integrar o GitHub Enterprise Server Backup Utilities a um ambiente para fins de armazenamento permanente em longo prazo de dados essenciais.

Recomendamos que o host de backup e o sua instância do GitHub Enterprise Server estejam geograficamente distantes um do outro. Essa medida garante que os backups estejam disponíveis para recuperação em casos de grandes desastres ou falhas de rede no site primário.

Os requisitos de armazenamento físico variam com base no uso do disco do repositório Git e nos padrões de crescimento esperados:

HardwareRecomendação
vCPUs4
Memória8 GB
ArmazenamentoCinco vezes o armazenamento alocado da instância primária

Podem ser necessários mais recursos, dependendo do seu uso, como atividade do usuário e integrações selecionadas.

Para obter mais informações, confira os requisitos do GitHub Enterprise Server Backup Utilities na documentação do projeto do GitHub Enterprise Server Backup Utilities.

Instalação do GitHub Enterprise Server Backup Utilities

Para instalar o GitHub Enterprise Server Backup Utilities no host de backup, baixe a versão mais recente do GitHub Enterprise Server Backup Utilities no repositório github/backup-utils compatível com sua versão do GitHub Enterprise Server. Por exemplo, se você executar a versão 3.8.4 do GitHub Enterprise Server, baixe a versão mais recente do GitHub Enterprise Server Backup Utilities na série 3.10. Isso é possível porque todas as versões do GitHub Enterprise Server Backup Utilities são compatíveis com as duas versões anteriores, o que significa que a série 3.10 do GitHub Enterprise Server Backup Utilities pode ser usada para fazer backup e restaurar as instâncias do GitHub Enterprise Server que executam as versões 3.8, 3.9 ou 3.10.

Depois de baixar um arquivo compactado, você poderá extrair e instalar o conteúdo. Para obter mais informações, confira Introdução no repositório github/backup-utils.

Se você tiver um arquivo de configuração de backup existente, , certifique-se de copiar o arquivo para o local da versão recém-extraída e instalada de GitHub Enterprise Server Backup Utilities.

Os instantâneos de backup criados por GitHub Enterprise Server Backup Utilities são gravados no caminho de disco definido pela variável de diretório de dados no arquivo. Esses instantâneos precisam ser armazenados em um sistema de arquivos que dê suporte a links simbólicos e físicos.

Observação

Recomendamos garantir que seus instantâneos não sejam mantidos em um subdiretório do diretório de instalação do GitHub Enterprise Server Backup Utilities, para evitar sobrescrever inadvertidamente o diretório de dados ao atualizar as versões do GitHub Enterprise Server Backup Utilities.

  1. Baixe a versão relevante do GitHub Enterprise Server Backup Utilities na página de Lançamentos do repositório github/backup-utils.

  2. Para extrair o repositório usando tar, execute o comando a seguir.

    tar -xzvf /path/to/github-backup-utils-vMAJOR.MINOR.PATCH.tar.gz
    
  3. Para alterar para o diretório do repositório local, execute o comando a seguir.

    cd backup-utils
    
  4. Para copiar o arquivo incluído no , execute o comando a seguir.

    cp backup.config-example backup.config
    
  5. Para personalizar sua configuração, edite em um editor de texto.

    1. Se você atualizou anteriormente GitHub Enterprise Server Backup Utilities usando o Git, certifique-se de copiar sua configuração existente do no novo arquivo. Para saber mais, consulte Atualizando GitHub Enterprise Server Backup Utilities.

    2. Defina o valor como o nome do host ou o endereço IP da instância primária do GitHub Enterprise Server.

      Observação

      Se o sua instância do GitHub Enterprise Server for implantado como um cluster ou em uma configuração de alta disponibilidade por meio de um balanceador de carga, o poderá ser o nome do host do balanceador de carga, desde que ele permita o acesso SSH na porta 122 ao sua instância do GitHub Enterprise Server.

      Para garantir que uma instância recuperada esteja disponível imediatamente, execute backups direcionados à instância primária mesmo em uma configuração de replicação geográfica.

    3. Defina o valor como o local do sistema de arquivos em que deseja armazenar instantâneos de backup. Recomendamos escolher um local no mesmo sistema de arquivos que seu host de backup.

  6. Para conceder acesso ao host de backup à instância, abra a página de configurações da instância principal em e adicione a chave SSH do host de backup à lista de chaves SSH autorizadas. Para saber mais, confira AUTOTITLE.

  7. Em seu host de backup, verifique a conectividade do SSH com o sua instância do GitHub Enterprise Server usando o comando .

    ./bin/ghe-host-check
    
  8. Para criar um backup completo inicial, execute o comando a seguir.

    ./bin/ghe-backup
    

Para obter informações sobre o uso avançado, confira GitHub Enterprise Server Backup Utilities README na documentação do projeto do GitHub Enterprise Server Backup Utilities.

Atualizar o GitHub Enterprise Server Backup Utilities

Ao fazer upgrade do GitHub Enterprise Server Backup Utilities, escolha uma versão que funcione com a sua versão atual do GitHub Enterprise Server. Sua instalação do GitHub Enterprise Server Backup Utilities precisa ser pelo menos da mesma versão que sua instância do GitHub Enterprise Server e não pode estar mais de duas versões à frente. Para obter mais informações, confira os requisitos de versão do GitHub Enterprise Server na documentação do projeto do GitHub Enterprise Server Backup Utilities.

  1. Verifique o método de instalação do GitHub Enterprise Server Backup Utilities. As versões anteriores de GitHub Enterprise Server Backup Utilities eram compatíveis com a instalação e atualizações em um repositório Git local, mas esse método não é mais compatível.

    1. No host de backup, navegue até o diretório GitHub Enterprise Server Backup Utilities, geralmente backup-utils.

    2. Para verificar se existe um diretório de trabalho válido dentro de um repositório Git, execute o comando a seguir.

      git rev-parse --is-inside-work-tree
      
  2. Para determinar como atualizar GitHub Enterprise Server Backup Utilities, examine a saída de .

    • Se a saída é , GitHub Enterprise Server Backup Utilities foi instalado clonando o repositório Git do projeto. Para atualizar, copie sua configuração existente no e siga as instruções em Como instalar GitHub Enterprise Server Backup Utilities.
    • Se a saída inclui , GitHub Enterprise Server Backup Utilities foi extraído de um arquivo compactado. Para atualizar, siga as instruções em Como instalar GitHub Enterprise Server Backup Utilities.

Programar um backup

Você pode agendar backups regulares no host de backup usando o comando ou um serviço de agendamento de comando semelhante. A frequência configurada determinará o objetivo do ponto de recuperação (RPO) nos piores cenários do seu plano de recuperação. Por exemplo, ao programar backups diários à meia-noite, você pode perder até 24 horas de dados em caso de desastre. É recomendável começar com backups a cada hora, garantindo a possibilidade de perdas menores (no máximo de uma hora) caso os dados primários do site sejam destruídos.

Se as tentativas de backup forem sobrepostas, o comando será anulado com uma mensagem de erro, indicando a existência de um backup simultâneo. Nesse caso, é recomendável diminuir a frequência dos backups programados. Para obter mais informações, consulte a seção "Agendamento de backups" do GitHub Enterprise Server Backup Utilities README na documentação do projeto GitHub Enterprise Server Backup Utilities.

Como restaurar um backup

No caso de interrupção prolongada ou evento catastrófico no site primário, você pode restaurar o sua instância do GitHub Enterprise Server provisionando outra instância e executando uma restauração por meio do host de backup. Antes de restaurar uma instância, você precisa adicionar a chave SSH do host de backup à instância de destino do GitHub Enterprise como uma chave SSH autorizada.

Ao executar restaurações de backup para sua instância do GitHub Enterprise Server, você só pode restaurar dados de no máximo duas versões de recurso anteriores. Por exemplo, se você fizer um backup do GitHub Enterprise Server 3.0.x, será possível restaurar o backup para uma instância que está executando o GitHub Enterprise Server 3.2.x. Não é possível restaurar dados de um backup do GitHub Enterprise Server 2.22.x para uma instância que executa a 3.2.x, porque isso significa três saltos entre as versões (2.22 para 3.0, 3.0 para 3.1 e 3.1 para 3.2). Primeiro, você precisa restaurar em uma instância que executa a versão 3.1.x e, em seguida, atualizar para a 3.2.x.

As configurações de rede são excluídas do instantâneo de backup. Após a restauração, você precisa configurar manualmente a rede na instância de destino do GitHub Enterprise Server.

Pré-requisitos

  1. Verifique se o modo de manutenção está habilitado na instância primária e todos os processos ativos foram concluídos. Para saber mais, confira AUTOTITLE.
  2. Interrompa a replicação em todos os nós de réplica em uma configuração de alta disponibilidade. Para saber mais, confira AUTOTITLE.
  3. Provisione uma nova instância do GitHub Enterprise Server para usar como destino na restauração do backup. Para saber mais, confira AUTOTITLE.
  4. Se o sua instância do GitHub Enterprise Server tiver o GitHub Actions habilitado, você precisará configurar o provedor de armazenamento externo para o GitHub Actions na instância substituta. Para saber mais, confira AUTOTITLE.

Iniciando a operação de restauração

Para restaurar o sua instância do GitHub Enterprise Server a partir do host de backup usando o último instantâneo bem-sucedido, use o comando. Você pode usar as opções adicionais a seguir com .

  • O sinalizador substitui as configurações, o certificado e os dados de licença no host de destino, mesmo que ele já esteja configurado. Omita este flag se você estiver configurando uma instância de teste para fins de teste e desejar manter a configuração existente no destino. Para obter mais informações, confira a seção "Como usar comandos de backup e restauração" do README do GitHub Enterprise Server Backup Utilities no repositório github/backup-utils.
  • O sinalizador permite que você selecione outro instantâneo de backup.

Depois de executar , o comando confirma a restauração e, em seguida, gera detalhes e status durante a operação.

$ ghe-restore -c 169.154.1.1
> Checking for leaked keys in the backup snapshot that is being restored ...
> * No leaked keys found
> Connect 169.154.1.1:122 OK (v2.9.0)

> WARNING: All data on GitHub Enterprise appliance 169.154.1.1 (v2.9.0)
>          will be overwritten with data from snapshot 20170329T150710.
> Please verify that this is the correct restore host before continuing.
> Type 'yes' to continue: yes

> Starting restore of 169.154.1.1:122 from snapshot 20170329T150710
# ...output truncated
> Completed restore of 169.154.1.1:122 from snapshot 20170329T150710
> Visit https://169.154.1.1/setup/settings to review appliance configuration.

Opcionalmente, para validar a restauração, configure uma lista de exceções de IP para permitir o acesso a uma lista especificada de endereços IP. Para saber mais, confira AUTOTITLE.

Em uma instância em uma configuração de alta disponibilidade, depois de restaurar para novos discos em uma instância existente ou vazia, pode relatar que a replicação do Git ou Alambic está fora de sincronia devido a UUIDs de servidor obsoletas. Essas UUIDs obsoletas podem ser o resultado de um nó desativado em uma configuração de alta disponibilidade que ainda está presente no banco de dados do aplicativo, mas não na configuração de replicação restaurada.

Para corrigir após a conclusão da restauração e antes de iniciar a replicação, você pode eliminar UUIDs obsoletas usando . Se precisar de mais assistência, acesse o Suporte do GitHub Enterprise.

Monitorando o progresso do backup ou da restauração

Durante uma operação de backup ou restauração, você pode usar o utilitário no host de backup para monitorar o progresso da operação. O utilitário imprime o progresso de cada trabalho sequencialmente.

Para monitorar o progresso no host de backup, no diretório que contém GitHub Enterprise Server Backup Utilities, execute o comando a seguir.

Shell
bin/ghe-backup-progress

Por padrão, o utilitário imprime o progresso continuamente até que a operação seja concluída. Pressione qualquer tecla para retornar ao prompt.

Opcionalmente, você pode executar o comando a seguir para imprimir o progresso atual, o último trabalho concluído e, em seguida, sair imediatamente.

Shell
bin/ghe-backup-progress --once