Sobre as opções de backup para GitHub Enterprise Server
GitHub oferece duas opções para fazer backup de sua GitHub Enterprise Server instância:
- GitHub Enterprise Server Backup Utilities: um sistema de backup de software livre que você instala em um host separado. Para obter mais informações, veja as seguintes abaixo.
- GitHub Enterprise Server Backup Service (in prévia pública): um serviço de backup gerenciado disponível em GitHub Enterprise Server. Confira Serviço de backup do GitHub Enterprise Server.
Sobre o GitHub Enterprise Server Backup Utilities
GitHub Enterprise Server Backup Utilities é um sistema de backup que você instala em um host separado e que tira instantâneos de backup de sua instância do GitHub Enterprise Server em intervalos regulares por uma conexão de rede SSH segura. Você pode usar um instantâneo para restaurar uma instância existente GitHub Enterprise Server a um estado anterior a partir 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 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.
Versões principais e números de versão de GitHub Enterprise Server Backup Utilities se alinham com os lançamentos de funcionalidades de GitHub Enterprise Server. Damos suporte às quatro versões mais recentes de ambos os produtos. Para saber mais, confira Lançamentos do GitHub Enterprise Server.
Para obter informações mais detalhadas sobre recursos, requisitos e uso avançado, consulte o GitHub Enterprise Server Backup Utilities README na documentação do projeto GitHub Enterprise Server Backup Utilities.
Pré-requisitos
Para usar GitHub Enterprise Server Backup Utilities, você deve ter um sistema de 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.
Você também pode integrar GitHub Enterprise Server Backup Utilities a um ambiente existente para o armazenamento permanente de longo prazo de dados críticos.
Recomendamos que o host de backup e sua instância do GitHub Enterprise Server estejam geograficamente distantes entre si. 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:
| Hardware | Recomendação |
|---|---|
| vCPUs | 4 |
| Memory | 8 GB |
| Armazenamento | Cinco 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, consulte GitHub Enterprise Server Backup Utilities os requisitos na documentação do GitHub Enterprise Server Backup Utilities projeto.
Instalar GitHub Enterprise Server Backup Utilities
Para instalar GitHub Enterprise Server Backup Utilities no seu host de backup, baixe a versão mais recente de GitHub Enterprise Server Backup Utilities no repositório github/backup-utils que seja 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 do GitHub Enterprise Server Backup Utilities são retrocompatíveis por duas versões, o que significa que a série 3.10 do GitHub Enterprise Server Backup Utilities pode ser usada para fazer backup e restaurar 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, backup.configcertifique-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.
Observação
Recomendamos certificar-se de que seus snapshots não sejam armazenados em um subdiretório do diretório de instalação do GitHub Enterprise Server Backup Utilities, para evitar sobrescrever acidentalmente seu diretório de dados ao atualizar versões do GitHub Enterprise Server Backup Utilities.
-
Baixe a release relevante GitHub Enterprise Server Backup Utilities na página Releases do repositório github/backup-utils.
-
Para extrair o repositório usando tar, execute o comando a seguir.
tar -xzvf /path/to/github-backup-utils-vMAJOR.MINOR.PATCH.tar.gz -
Para alterar para o diretório do repositório local, execute o comando a seguir.
cd backup-utils -
Para copiar o arquivo incluído
backup.config-examplenobackup.config, execute o comando a seguir.cp backup.config-example backup.config -
Para personalizar sua configuração, edite
backup.configem um editor de texto.-
Se você atualizou GitHub Enterprise Server Backup Utilities anteriormente usando o Git, certifique-se de copiar sua configuração existente de
backup.configpara o novo arquivo. Para obter mais informações, consulte Atualização GitHub Enterprise Server Backup Utilities. -
Defina o valor de
GHE_HOSTNAMEcomo o nome do host ou o endereço IP da sua instância primária GitHub Enterprise Server.Observação
Se sua instância do GitHub Enterprise Server for implantado como um cluster ou em uma configuração de alta disponibilidade usando um balanceador de carga, poderá
GHE_HOSTNAMEser o nome do host do balanceador de carga, desde que o balanceador de carga permita o acesso SSH pela porta 122 para 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.
-
Defina o valor
GHE_DATA_DIRcomo 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.
-
-
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/settingse adicione a chave SSH do host de backup à lista de chaves SSH autorizadas. Para saber mais, confira Acessar o shell administrativo (SSH). -
No host de backup, verifique a conectividade SSH com sua instância do GitHub Enterprise Server usando o comando
ghe-host-check../bin/ghe-host-check -
Para criar um backup completo inicial, execute o comando a seguir.
./bin/ghe-backup
Para obter mais informações sobre uso avançado, consulte o GitHub Enterprise Server Backup Utilities README na documentação do projeto GitHub Enterprise Server Backup Utilities.
Atualização GitHub Enterprise Server Backup Utilities
Ao atualizar GitHub Enterprise Server Backup Utilities, você deve escolher uma versão que funcionará com sua versão atual de GitHub Enterprise Server. Sua instalação do GitHub Enterprise Server Backup Utilities deve ser de, no mínimo, a 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, consulte GitHub Enterprise Server os requisitos de versão na documentação do GitHub Enterprise Server Backup Utilities projeto.
-
Verifique o método de instalação para GitHub Enterprise Server Backup Utilities. Versões anteriores de GitHub Enterprise Server Backup Utilities suportavam a instalação e as atualizações em um repositório Git local, mas esse método não é mais suportado.
-
No host de backup, navegue até o diretório GitHub Enterprise Server Backup Utilities, geralmente
backup-utils. -
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
-
-
Para determinar como atualizar GitHub Enterprise Server Backup Utilities, examine a saída de
git rev-parse --is-inside-work-tree.- Se a saída for
true, GitHub Enterprise Server Backup Utilities foi instalada clonando o repositório Git do projeto. Para atualizar, copie a configuraçãobackup.configexistente e siga as instruções em Instalar GitHub Enterprise Server Backup Utilities. - Se a saída incluir
fatal: not a git repository (or any of the parent directories), GitHub Enterprise Server Backup Utilities foi extraído de um arquivo compactado. Para atualizar, siga as instruções em Instalar GitHub Enterprise Server Backup Utilities.
- Se a saída for
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 mais informações, consulte a seção "Agendamento de backups" do GitHub Enterprise Server Backup Utilities README na documentação do GitHub Enterprise Server Backup Utilities projeto.
Como restaurar um backup
No caso de interrupção prolongada ou evento catastrófico no site primário, você pode restaurar sua instância do GitHub Enterprise Server provisionando outra instância e executando uma restauração do host de backup. Você deve adicionar a chave SSH do host de backup à instância de destino GitHub Enterprise como uma chave SSH autorizada antes de restaurar uma instância.
Ao restaurar backups para sua instância do GitHub Enterprise Server, você só pode restaurar dados de, no máximo, até dois lançamentos de recursos anteriores. Por exemplo, se você fizer um backup de GitHub Enterprise Server 3.0.x, poderá restaurar o backup para uma instância executando GitHub Enterprise Server 3.2.x. Você não pode restaurar dados de um backup de GitHub Enterprise Server 2.22.x para uma instância executando 3.2.x, pois isso seria três saltos entre as versões (2.22 a 3.0 para 3.1 a 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ê deve configurar manualmente a rede na instância de destino GitHub Enterprise Server .
Pré-requisitos
- 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.
- Interrompa a replicação em todos os nós de réplica em uma configuração de alta disponibilidade. Para saber mais, confira Sobre a configuração de alta disponibilidade.
- Provisione uma nova GitHub Enterprise Server instância a ser usada como um destino para a restauração do backup. Para saber mais, confira Configurando uma instância do GitHub Enterprise Server.
- Se sua instância do GitHub Enterprise Server tiver GitHub Actions habilitado, você deve configurar o provedor de armazenamento externo para GitHub Actions na instância de substituição. Para saber mais, confira Fazendo backup e restaurando GitHub Enterprise Server com GitHub Actions habilitado.
Iniciando a operação de restauração
Para restaurar sua instância do GitHub Enterprise Server a partir do seu host de backup usando o último snapshot bem-sucedido, use o comando ghe-restore. Você pode usar as opções adicionais a seguir com ghe-restore.
- O sinalizador
-csubstitui 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, consulte a seção "Usando comandos de backup e restauração" do GitHub Enterprise Server Backup Utilities README no repositório github/backup-utils. - O sinalizador
-spermite 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 você precisar de mais assistência, visite 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 GitHub Enterprise Server Backup Utilitiescontém, execute o comando a seguir.
bin/ghe-backup-progress
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.
bin/ghe-backup-progress --once
bin/ghe-backup-progress --once