Skip to main content

Configuración de copias de seguridad en la instancia mediante utilidades de copia de seguridad

Como parte de un plan de recuperación ante desastres, puede proteger los datos de producción en tu instancia de GitHub Enterprise Server mediante la configuración de copias de seguridad automatizadas.

Acerca de las opciones de copia de seguridad para GitHub Enterprise Server

GitHub ofrece dos opciones para realizar copias de seguridad de la GitHub Enterprise Server instancia:

  • GitHub Enterprise Server Backup Utilities: sistema de copia de seguridad de código abierto que se instala en un host independiente. Para más información, vea la sección siguiente.
  • GitHub Enterprise Server Backup Service (en versión preliminar pública): un servicio de copia de seguridad administrado disponible en GitHub Enterprise Server. Consulta Servicio de copia de seguridad para GitHub Enterprise Server.

Acerca de GitHub Enterprise Server Backup Utilities

GitHub Enterprise Server Backup Utilities es un sistema de copia de seguridad que se instala en un host independiente y que toma instantáneas de copia de seguridad de tu instancia de GitHub Enterprise Server a intervalos regulares a través de una conexión de red SSH segura. Puede utilizar una instantánea para restaurar una instancia existente GitHub Enterprise Server a un estado anterior desde el host de copia de seguridad.

Solo se transferirán por la red y ocuparán espacio de almacenamiento físico adicional los datos que se hayan agregado después de esa última instantánea. Para minimizar el impacto en el rendimiento, las copias de seguridad se realizan en línea con la prioridad CPU/IO más baja. No necesitas programar una ventana de mantenimiento para realizar una copia de seguridad.

Las versiones principales y los números de versión de GitHub Enterprise Server Backup Utilities se alinean con las versiones de funcionalidades de GitHub Enterprise Server. Se admiten las cuatro versiones más recientes de ambos productos. Para más información, consulta Lanzamientos de GitHub Enterprise Server.

Para obtener información más detallada sobre las características, los requisitos y el uso avanzado, consulte el GitHub Enterprise Server Backup Utilities README en la documentación del proyecto GitHub Enterprise Server Backup Utilities.

Prerrequisitos

Para usar GitHub Enterprise Server Backup Utilities, debe tener un sistema host independiente de tu instancia de GitHub Enterprise Server. Para más información sobre cómo se debe configurar el sistema, consulta Requisitos en el repositorio github/backup-utils.

También puede integrarse GitHub Enterprise Server Backup Utilities en un entorno existente para el almacenamiento permanente a largo plazo de datos críticos.

Se recomienda que el host de copia de seguridad y tu instancia de GitHub Enterprise Server esté geográficamente distante entre sí. Esto asegura que las copias de seguridad estén disponibles para su recuperación en el caso de que ocurra un desastre significativo o una interrupción de red en el sitio principal.

Los requisitos de almacenamiento físico variarán en función del uso del disco del repositorio de Git y de los patrones de crecimiento esperados:

HardwareRecomendación
vCPUs4
Memoria8 GB
StorageCinco veces el almacenamiento asignado de la instancia principal

Es posible que se requieran más recursos según su uso, como la actividad del usuario y las integraciones seleccionadas.

Para obtener más información, consulte GitHub Enterprise Server Backup Utilities requisitos en la documentación del GitHub Enterprise Server Backup Utilities proyecto.

Instalando GitHub Enterprise Server Backup Utilities

Para instalar GitHub Enterprise Server Backup Utilities en el host de copia de seguridad, descargue la versión más reciente de GitHub Enterprise Server Backup Utilities desde el repositorio github/backup-utils que sea compatible con su versión de GitHub Enterprise Server. Por ejemplo, si ejecuta la versión 3.8.4 de GitHub Enterprise Server, descargue la versión más reciente de GitHub Enterprise Server Backup Utilities en la serie 3.10. Esto es posible porque todas las versiones de GitHub Enterprise Server Backup Utilities son retrocompatibles con las dos versiones anteriores, lo que significa que la serie 3.10 de GitHub Enterprise Server Backup Utilities se puede usar para realizar copias de seguridad y restaurar instancias de GitHub Enterprise Server que ejecutan las versiones 3.8, 3.9 o 3.10.

Después de descargar un archivo comprimido, puedes extraer e instalar el contenido. Para obtener más información, consulta Introducción en el repositorio github/backup-utils.

Si tiene un archivo de configuración de copia de seguridad existente, backup.configasegúrese de copiar el archivo en la ubicación de la versión recién extraída e instalada de GitHub Enterprise Server Backup Utilities.

Las instantáneas de copia de seguridad creadas por GitHub Enterprise Server Backup Utilities se escriben en la ruta del disco establecida en la variable de directorio de datos GHE_DATA_DIR de tu archivo backup.config. Estas instantáneas deben almacenarse en un sistema de archivos que admita vínculos simbólicos y físicos.

Nota:

Recomendamos asegurarse de que las instantáneas no se guarden en un subdirectorio del directorio de instalación de GitHub Enterprise Server Backup Utilities, para evitar sobrescribir accidentalmente el directorio de datos al actualizar versiones de GitHub Enterprise Server Backup Utilities.

  1. Descargue la versión correspondiente GitHub Enterprise Server Backup Utilities desde la página Lanzamientos del repositorio github/backup-utils.

  2. Para extraer el repositorio mediante tar, ejecute el siguiente comando.

    tar -xzvf /path/to/github-backup-utils-vMAJOR.MINOR.PATCH.tar.gz
    
  3. Ejecuta el siguiente comando para cambiar al directorio del repositorio local.

    cd backup-utils
    
  4. Ejecuta el siguiente comando para copiar el archivo backup.config-example incluido en backup.config.

    cp backup.config-example backup.config
    
  5. Para personalizar la configuración, edita backup.config en un editor de texto.

    1. Si ha actualizado GitHub Enterprise Server Backup Utilities anteriormente mediante Git, asegúrese de copiar la configuración existente desde backup.config en el nuevo archivo. Para obtener más información, vea Actualización de GitHub Enterprise Server Backup Utilities.

    2. Configure el valor de GHE_HOSTNAME como el nombre de host o la dirección IP de su instancia primaria GitHub Enterprise Server.

      Nota:

      Si tu instancia de GitHub Enterprise Server se implementa como un clúster o en una configuración de alta disponibilidad mediante un equilibrador de carga, GHE_HOSTNAME puede ser el nombre de host del equilibrador de carga, siempre y cuando el equilibrador de carga permita el acceso SSH a través del puerto 122 a tu instancia de GitHub Enterprise Server.

      Para garantizar que una instancia recuperada esté disponible de inmediato, realiza copias de seguridad centradas en la instancia principal, incluso en una configuración de replicación geográfica.

    3. Establezca el valor GHE_DATA_DIR para la ubicación del sistema de archivos en la que quiera almacenar las instantáneas de copias de seguridad. Se recomienda elegir una ubicación en el mismo sistema de archivos que el host de copia de seguridad.

  6. Para conceder acceso al host de copia de seguridad a la instancia, abre la página de configuración de la instancia principal en http(s)://HOSTNAME/setup/settings y agrega la clave SSH del host de copia de seguridad a la lista de claves SSH autorizadas. Para más información, consulta Acceder al shell administrativo (SSH).

  7. En el host de copia de seguridad, compruebe la conectividad SSH con tu instancia de GitHub Enterprise Server mediante el comando ghe-host-check.

    ./bin/ghe-host-check
    
  8. Ejecuta el siguiente comando para crear una copia de seguridad completa inicial.

    ./bin/ghe-backup
    

Para obtener más información sobre el uso avanzado, consulte el GitHub Enterprise Server Backup Utilities README en la documentación del proyecto GitHub Enterprise Server Backup Utilities.

Mejora GitHub Enterprise Server Backup Utilities

Al actualizar GitHub Enterprise Server Backup Utilities, debe elegir una versión que funcione con la versión actual de GitHub Enterprise Server. La instalación de GitHub Enterprise Server Backup Utilities debe ser al menos la misma versión que tu instancia de GitHub Enterprise Servery no puede ser superior a dos versiones anteriores. Para obtener más información, vea GitHub Enterprise Server Requisitos de versión en la documentación del GitHub Enterprise Server Backup Utilities proyecto.

  1. Compruebe el método de instalación de GitHub Enterprise Server Backup Utilities. Las versiones anteriores de GitHub Enterprise Server Backup Utilities admitían la instalación y las actualizaciones en un repositorio Git local, pero este método ya no es compatible.

    1. En el host de copia de seguridad, ve al directorio de GitHub Enterprise Server Backup Utilities, normalmente backup-utils.

    2. Ejecuta el siguiente comando para comprobar si existe un directorio de trabajo válido dentro de un repositorio Git.

      git rev-parse --is-inside-work-tree
      
  2. Para determinar cómo actualizar GitHub Enterprise Server Backup Utilities, revise la salida de git rev-parse --is-inside-work-tree.

    • Si la salida es true, GitHub Enterprise Server Backup Utilities se instaló mediante la clonación del repositorio git del proyecto. Para actualizar, copie la configuración existente en backup.config y siga las instrucciones de Instalación GitHub Enterprise Server Backup Utilities.
    • Si la salida incluye fatal: not a git repository (or any of the parent directories), GitHub Enterprise Server Backup Utilities se extrajo de un archivo de archivo comprimido. Para actualizar, siga las instrucciones en Instalación GitHub Enterprise Server Backup Utilities.

Programar una copia de seguridad

Puede programar copias de seguridad con una determinada frecuencia en el host de copia de seguridad utilizando el comando cron(8) o un servicio de programación mediante comando similar. La frecuencia de copias de seguridad configurada dictará el peor caso de Punto Objetivo de Recuperación (RPO) de tu plan de recuperación. Por ejemplo, si has programado que la copia de seguridad se ejecute todos los días a la medianoche, podrías perder hasta 24 horas de datos en un escenario de desastre. Recomendamos comenzar con una copia de seguridad cada hora, garantizando que, en el peor de los casos, se produzca una pérdida máxima de datos de una hora en caso de que se destruyan los datos del sitio principal.

Si los intentos de copias de seguridad se superponen, el comando ghe-backup se detendrá con un mensaje de error que indicará la existencia de una copia de seguridad simultánea. Si esto ocurre, recomendamos que disminuyas la frecuencia de tus copias de seguridad programadas. Para obtener más información, consulte la sección "Programación de copias de seguridad" del archivo GitHub Enterprise Server Backup UtilitiesREADME en la documentación del proyecto GitHub Enterprise Server Backup Utilities.

Restauración de una copia de seguridad

En caso de interrupción prolongada o evento catastrófico en el sitio principal, puede restaurar tu instancia de GitHub Enterprise Server aprovisionando otra instancia y restaurándola desde el host de copia de seguridad. Debe agregar la clave SSH del host de copia de seguridad a la instancia de destino GitHub Enterprise como una clave SSH autorizada antes de restaurar una instancia.

Al realizar restauraciones a partir de copias de seguridad en tu instancia de GitHub Enterprise Server, solo se pueden restaurar datos de hasta dos versiones anteriores. Por ejemplo, si realiza una copia de seguridad de GitHub Enterprise Server la versión 3.0.x, puede restaurar la copia de seguridad en una instancia que ejecute GitHub Enterprise Server 3.2.x. No se pueden restaurar datos de una copia de seguridad de GitHub Enterprise Server 2.22.x a una instancia que ejecute 3.2.x, ya que sería tres saltos entre versiones (de 2.22 a 3.0 a 3.1 a 3.2). Primero necesitarías restablecer a una instancia que ejecute 3.1.x y luego actualizar a 3.2.x.

La configuración de red se excluye de la instantánea de copia de seguridad. Después de la restauración, debe configurar manualmente las redes en la instancia de destino GitHub Enterprise Server .

Prerrequisitos

  1. El modo de mantenimiento está habilitado en la instancia principal y se han completado todos los procesos activos. Para más información, consulta Habilitar y programar el modo de mantenimiento.
  2. Detenga la replicación en todos los nodos de réplica en una configuración de alta disponibilidad. Para más información, consulta Acerca de la configuración de alta disponibilidad.
  3. Aprovisione una nueva GitHub Enterprise Server instancia para usarla como destino para la restauración de la copia de seguridad. Para más información, consulta Configuración de una instancia de GitHub Enterprise Server.
  4. Si tu instancia de GitHub Enterprise Server tiene GitHub Actions habilitado, debe configurar el proveedor de almacenamiento externo para GitHub Actions en la instancia de reemplazo. Para más información, consulta Copia de seguridad y restauración de GitHub Enterprise Server con GitHub Actions habilitado.

Inicio de la operación de restauración

Para restaurar tu instancia de GitHub Enterprise Server desde el host de copia de seguridad usando la última instantánea realizada correctamente, use el comando ghe-restore. Puedes usar las siguientes opciones adicionales con ghe-restore.

  • La marca -c sobrescribe los ajustes, el certificado y los datos de licencia en el host objetivo, incluso si este ya está configurado. Omite esta marca si estás configurando una instancia de preparación con fines de prueba y si quieres conservar la configuración existente en el objetivo. Para obtener más información, consulte la sección "Uso de comandos de copia de seguridad y restauración" del GitHub Enterprise Server Backup Utilities archivo Léame en el repositorio github/backup-utils.
  • La marca -s le permite seleccionar una instantánea de copia de seguridad diferente.

Después de ejecutar ghe-restore, el comando confirma la restauración y, a continuación, genera los detalles y el estado durante la operación.

$ 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 la restauración, configura una lista de excepciones IP para permitir el acceso a una lista especificada de direcciones IP. Para más información, consulta Habilitar y programar el modo de mantenimiento.

En una instancia de una configuración de alta disponibilidad, después de restaurar en discos nuevos en una instancia existente o vacía, ghe-repl-status puede notificar que la replicación de Git o Alambic no está sincronizada debido a UUID de servidor obsoletos. Estos UUID obsoletos pueden ser el resultado de un nodo retirado en una configuración de alta disponibilidad que sigue estando presente en la base de datos de la aplicación, pero no en la configuración de replicación restaurada.

Para corregirlo una vez completada la restauración y antes de iniciar la replicación, puedes anular los UUID obsoletos mediante ghe-repl-teardown. Si necesita más ayuda, visite Soporte técnico para GitHub Enterprise.

Supervisión del progreso de la copia de seguridad o restauración

Durante una operación de copia de seguridad o restauración, puedes usar la utilidad ghe-backup-progress en el host de copia de seguridad para supervisar el progreso de la operación. La utilidad imprime el progreso de cada trabajo secuencialmente.

Para supervisar el progreso en el host de copia de seguridad, desde el directorio que contiene GitHub Enterprise Server Backup Utilities, ejecute el siguiente comando.

Shell
bin/ghe-backup-progress

De forma predeterminada, la utilidad imprime el progreso continuamente hasta que se completa la operación. Puedes presionar cualquier tecla para volver al símbolo del sistema.

Opcionalmente, puedes ejecutar el siguiente comando para imprimir el progreso actual, el último trabajo completado y, a continuación, salir inmediatamente.

Shell
bin/ghe-backup-progress --once