Skip to main content

Como configurar backups em sua instância

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 o GitHub Enterprise Server Backup Utilities

O GitHub Enterprise Server Backup Utilities é um sistema de backup que você instala em um host separado, que usa instantâneos de backup do sua instância do GitHub Enterprise Server em intervalos regulares em uma conexão de rede SSH segura. É possível usar um instantâneo para voltar uma instância do GitHub Enterprise Server a um estado anterior do 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 com a menor prioridade de E/S de CPU. Não é necessário programar um período de manutenção para fazer backups.

As principais versões e números de versão para GitHub Enterprise Server Backup Utilities se alinham às versões de recurso de GitHub Enterprise Server. Damos suporte às quatro versões mais recentes de ambos os produtos. Para saber mais, confira Versões do GitHub Enterprise Server.

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.

Instalar o GitHub Enterprise Server Backup Utilities

Para instalar GitHub Enterprise Server Backup Utilities no host de backup, baixe a versão mais recente de GitHub Enterprise Server Backup Utilities do repositório github/backup-utils compatível com sua versão de GitHub Enterprise Server. Por exemplo, se você estiver executando a versão 3.8.4 de GitHub Enterprise Server, baixe a versão mais recente de GitHub Enterprise Server Backup Utilities na série 3.10. Isso é possível porque todas as versões de GitHub Enterprise Server Backup Utilities são compatíveis com versões anteriores para duas versões, o que significa que a série GitHub Enterprise Server Backup Utilities 3.10 pode ser usada para fazer backup e restauração de instâncias GitHub Enterprise Server executando 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, backup.config, 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 GHE_DATA_DIR no arquivo backup.config. Esses instantâneos precisam ser armazenados em um sistema de arquivos que dê suporte a links simbólicos e físicos.

Note

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

  1. Baixe a versão do GitHub Enterprise Server Backup Utilities da página Versões 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 backup.config-example no backup.config, execute o comando a seguir.

    cp backup.config-example backup.config
    
  5. Para personalizar sua configuração, edite backup.config 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 backup.config no novo arquivo. Para saber mais, confira Atualizando GitHub Enterprise Server Backup Utilities.

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

      Note

      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 GHE_HOSTNAME 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 GHE_DATA_DIR 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 http(s)://HOSTNAME/setup/settings e adicione a chave SSH do host de backup à lista de chaves SSH autorizadas. Para saber mais, confira Acesar o shell administrativo (SSH).

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

    ./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 atualizar o GitHub Enterprise Server Backup Utilities, você precisa escolher uma versão que funcionará com sua versão atual do GitHub Enterprise Server. Sua instalação do GitHub Enterprise Server Backup Utilities precisa ter pelo menos a mesma versão que sua instância do GitHub Enterprise Server e não pode ter mais do que duas versões posteriores. 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 git rev-parse --is-inside-work-tree.

Programar um backup

Você pode agendar backups regulares no host de backup usando o comando cron(8) 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 ghe-backup 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 informações, confira a seção "Agendar backups" do GitHub Enterprise Server Backup Utilities README na documentação do projeto do 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, poderá restaurar o backup para uma instância 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 3.2.x, porque ela seria três saltos entre as versões (2.22 ara 3.0 para 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 Habilitar e programar o modo de manutenção.
  2. Interrompa a replicação em todos os nós réplica em uma configuração de alta disponibilidade. Para saber mais, confira Sobre a configuração de alta disponibilidade.
  3. Provisione uma nova instância do GitHub Enterprise Server para usar como destino para a restauração do seu backup. Para saber mais, confira Configurar uma instância do GitHub Enterprise Server.
  4. Se o sua instância do GitHub Enterprise Server tiver o GitHub Actions habilitado, primeiro, você precisará configurar o provedor de armazenamento externo do GitHub Actions na instância substituta. Para saber mais, confira Fazer backup e restaurar o GitHub Enterprise Server com o GitHub Actions habilitado.

Iniciando a operação de restauração

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

  • O sinalizador -c substitui as configurações, o certificado e os dados de licença no host de destino, mesmo que ele já esteja configurado. Omita esse sinalizador se você estiver configurando uma instância de preparo para fins de teste e se quiser manter a configuração 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 -s permite que você selecione outro instantâneo de backup.

Depois de executar ghe-restore, 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 Habilitar e programar o modo de manutenção.

Em uma instância em uma configuração de alta disponibilidade, depois de restaurar para novos discos em uma instância existente ou vazia, ghe-repl-status 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 ghe-repl-teardown. 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 ghe-backup-progress 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. Em seguida, pressione qualquer tecla para retornar ao menu principal.

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