Acerca de las instantáneas de Elasticsearch
De forma predeterminada, GitHub Enterprise Server Backup Utilities y GitHub Enterprise Server Backup Service realice una copia de seguridad de los datos del índice de búsqueda copiando archivos directamente desde el disco. Este enfoque no sigue las propias recomendaciones de Elasticsearch, puede consumir una gran cantidad de almacenamiento del dispositivo de copia de seguridad y conlleva cierto riesgo de dañar los índices de copia de seguridad.
Como alternativa opcional, tu instancia de GitHub Enterprise Server admite la funcionalidad integrada de instantáneas incrementales y restauración de Elasticsearch. Al configurar un proveedor de almacenamiento en la nube compatible y habilitar la estrategia de copia de seguridad de instantáneas:
ghe-backupcrea una instantánea incremental de los datos de su índice de búsqueda en su cuenta de almacenamiento en la nube configurada. Las instantáneas incrementales son más rápidas que una copia completa, especialmente en las copias de seguridad posteriores.ghe-restorerestaura los datos del índice de búsqueda desde su cuenta de almacenamiento en la nube, si existe una instantánea que coincida con la versión de la instancia de destino de GitHub Enterprise Server.- Las instantáneas están aisladas para cada versión de parche GitHub Enterprise Server, lo que permite reversiones más seguras entre versiones.
Esta característica es opcional. Si no configura un repositorio de instantáneas, tu instancia de GitHub Enterprise Server continúa realizando una copia de seguridad de los datos del índice de búsqueda mediante el método basado en disco existente.
Prerequisites
- Un proveedor de almacenamiento en la nube compatible: Azure Blob Storage, Amazon S3 o Google Cloud Storage (o un servicio compatible con una de estas API).
- El contenedor de almacenamiento o el cubo que planea usar como repositorio de instantáneas. Debe crear este contenedor o depósito usted mismo. GitHub Enterprise Server no lo crea automáticamente y se producirá un error en el registro del repositorio si el contenedor o el cubo aún no existen.
Configuración de un proveedor de almacenamiento de instantáneas
Configure los valores siguientes mediante ghe-config a través de SSH. Para obtener más información, vea Acceder al shell administrativo (SSH).
Aplicará la configuración para registrar el repositorio de instantáneas con Elasticsearch. El repositorio se llama search_index_snapshots-VERSION, donde VERSION es la versión actual de GitHub Enterprise Server.
almacenamiento de blobs de Azure
-
Establezca los secretos siguientes:
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, establezca un sufijo de punto de conexión de blob personalizado (el valor predeterminado es
core.windows.net):ghe-config secrets.elasticsearch.snapshot.azure.endpoint-suffix YOUR-ENDPOINT-SUFFIX -
Se aplica la configuración de ejecución.
ghe-config-apply
Amazon S3
-
Establezca los secretos siguientes:
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 la dirección URL del servicio, use el punto de conexión S3, por ejemplo
https://s3.us-east-1.amazonaws.com. -
Se aplica la configuración de ejecución.
ghe-config-apply
Google Cloud Storage
-
Cree una clave de cuenta de servicio en formato JSON con acceso a su cubo y, a continuación, codifíquela como base64.
base64 -w0 service-account.json -
Establezca los secretos siguientes:
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 -
Se aplica la configuración de ejecución.
ghe-config-apply
Comprobación del registro
Una vez completada la configuración, confirme que se registró el repositorio de instantáneas.
curl -k "http://127.0.0.1:9200/_snapshot/search_index_snapshots-$(ghe-version -v)/_status"
Si falta un secreto necesario, se produce un error en la configuración al registrar el repositorio. Actualice los secretos y vuelva a ejecutar ghe-config-apply para reintentar.
Habilitación de instantáneas durante la copia de seguridad y restauración
Configurar un proveedor de almacenamiento registra el repositorio de instantáneas, pero también debe habilitar la estrategia de copia de seguridad de instantáneas para que ghe-restore y ghe-backup la utilicen automáticamente.
-
GitHub Enterprise Server Backup Service: establezca la estrategia mediante
ghe-configen el dispositivo.ghe-config backup.es-backup-strategy snapshot -
GitHub Enterprise Server Backup Utilities: Configure la estrategia en su archivo
backup.configen el host de copia de seguridad.GHE_ES_BACKUP_STRATEGY=snapshotEl valor predeterminado es
rsync, que conserva el comportamiento de copia de seguridad basado en disco existente. GitHub Enterprise Server Backup Utilities almacena solo los metadatos de instantánea localmente; el contenido de la instantánea permanece en el almacenamiento en la nube configurado.
Si no establece una estrategia de copia de seguridad, el repositorio de instantáneas todavía se puede administrar manualmente, pero ghe-backup``ghe-restore seguirá usando el método basado en disco.
Gestionar instantáneas manualmente
Puede administrar instantáneas de Elasticsearch directamente mediante los siguientes comandos. Ejecute cualquier comando con la -h marca para obtener información de uso.
| Comando | Descripción |
|---|---|
ghe-es-create-snapshot | Crea una nueva instantánea en el repositorio configurado. |
ghe-es-list-snapshots | Enumera los repositorios de instantáneas o las instantáneas dentro de un repositorio. |
ghe-es-restore-snapshot | Restaura los índices de búsqueda a partir de una instantánea. |
Sugerencia
Para las copias de seguridad y restauraciones rutinarias, use GitHub Enterprise Server Backup Utilities o GitHub Enterprise Server Backup Service en lugar de estos comandos directamente. Las herramientas de copia de seguridad coordinan las instantáneas de Elasticsearch con el resto de los datos de la instancia para garantizar una copia de seguridad o restauración coherentes. Use los comandos manuales solo cuando necesite administrar instantáneas de índice de búsqueda independientemente de una copia de seguridad o restauración de instancias completas.
Restauración de una instantánea a partir de una versión anterior
Puede restaurar una instantánea creada por una versión anterior GitHub Enterprise Server a una versión posterior. No se puede restaurar una instantánea de una versión posterior a una versión anterior.
-
Enumere las instantáneas disponibles para la versión anterior.
ghe-es-list-snapshots -v 3.14.0 -
Restaure la instantánea que desee.
ghe-es-restore-snapshot -v 3.14.0 -s SNAPSHOT-NAME
Elasticsearch actualiza automáticamente los índices restaurados al formato de la versión actual.
Administración del almacenamiento de instantáneas
Las instantáneas de Elasticsearch son incrementales, pero la cuenta de almacenamiento en la nube todavía puede acumular instantáneas antiguas a lo largo del tiempo. Para evitar el crecimiento ilimitado del almacenamiento, configure una política de ciclo de vida con su proveedor de almacenamiento para eliminar automáticamente las instantáneas que superen el período de retención establecido. Para obtener más información, consulte la documentación del proveedor: