Consejos para automatizar backups en Scaleway con scripts y Object Storage

·

·

Consejos para Automatizar Backups en Scaleway con Scripts y Object Storage

Guía detallada y práctica para asegurar la integridad de tus datos en la nube

1. Introducción

En entornos de producción, contar con copias de seguridad automatizadas es fundamental para garantizar la continuidad del servicio y la recuperación ante fallos. Scaleway ofrece Object Storage compatible con S3, lo que abre la puerta a soluciones sencillas basadas en scripts y herramientas estándar. En esta guía amplia, cubriremos desde la configuración inicial hasta las mejores prácticas de retención y cifrado.

2. Requisitos Previos

  • Cuenta activa en Scaleway con permisos para gestionar buckets de Object Storage.
  • CLI de Scaleway (https://github.com/scaleway/scaleway-cli) instalado y configurado.
  • Herramienta aws-cli o s3cmd para interactuar con el endpoint S3 de Scaleway.
  • Acceso SSH a los servidores origen de los datos.
  • Conocimientos básicos de Bash, cron y Linux.

3. Configuración de Object Storage en Scaleway

3.1. Instalación y autenticación de la CLI

Instalamos la CLI oficial de Scaleway:

scw version-check
scw login
  

Siguiendo las instrucciones, obtendremos un Access Key y un Secret Key para el Object Storage.

3.2. Creación de un bucket S3

Definimos un bucket con políticas de ciclo de vida para retención a corto plazo y transición a Cold Storage si se desea:

Parámetro Descripción
bucket-name Nombre único de tu bucket S3
region Región S3 (p. ej. fr-par)
lifecycle-policy JSON con reglas de ciclo de vida

Ejemplo de creación vía aws-cli:

aws --endpoint-url=https://s3.fr-par.scw.cloud 
    s3api create-bucket --bucket mi-backup-bucket 
    --create-bucket-configuration LocationConstraint=fr-par
  

4. Diseño del Script de Backup

El corazón de la automatización es un shell script que:

  1. Detenga o congele la aplicación o base de datos (opcional).
  2. Genere un dump o tarball con compresión.
  3. Cifre el artefacto (si se requiere confidencialidad).
  4. Suba el archivo al Object Storage.
  5. Gestione la retención local (por ejemplo, eliminar viejas copias).

4.1. Plantilla de script (backup.sh)

#!/bin/bash
set -euo pipefail
# Variables de configuración
BUCKET=mi-backup-bucket
REGION=fr-par
AWS_ENDPOINT=https://s3.fr-par.scw.cloud
LOCAL_DIR=/var/backups
DATE=(date  %Y-%m-%d_%H-%M)
FILENAME=backup_{DATE}.tar.gz
FULLPATH={LOCAL_DIR}/{FILENAME}

# Función de limpieza local
function limpieza_local() {
  find {LOCAL_DIR} -type f -mtime  7 -name .tar.gz -exec rm {} 
}

# Generar snapshot de DB (ejemplo MySQL)
mysqldump --single-transaction --quick --lock-tables=false 
  -u user -ppassword mi_base_datos  gzip > {FULLPATH}

# Subir a Scaleway Object Storage
aws --endpoint-url={AWS_ENDPOINT} s3 cp {FULLPATH} s3://{BUCKET}/{FILENAME} 
    --acl private

# Limpiar archivos antiguos
limpieza_local

echo Backup completado: {FULLPATH}
  

4.2. Explicación del script

  • set -euo pipefail: asegura que el script falle ante cualquier error.
  • Variables definidas al inicio para facilitar la personalización.
  • Función limpieza_local borra backups locales con más de 7 días.
  • Uso de mysqldump con compresión para minimizar espacio y tiempo de transferencia.
  • El comando aws s3 cp envía el archivo al bucket, manteniendo privacidad con --acl private.

5. Programación con cron

Para ejecutar el script de forma periódica, añadimos una entrada al crontab del usuario pertinente:

# Ejecutar todos los días a las 02:30 AM
30 2    /usr/local/bin/backup.sh >> /var/log/backup.log 2>1
  

Verifica con crontab -l y supervisa el archivo /var/log/backup.log para detectar errores.

6. Cifrado y Seguridad

  • GPG: Antes de subir, puedes cifrar el tarball con tu clave pública GPG.
  • Server-Side Encryption (SSE): Scaleway permite cifrado en reposo mediante SSE-S3. Añade --sse AES256 al aws s3 cp.
  • Mantén tus Access Key y Secret Key en variables de entorno o en ~/.aws/credentials con permisos 600.

7. Políticas de Retención Avanzadas

Define reglas de ciclo de vida en el bucket para migrar objetos a Cold Storage o eliminarlos tras cierto periodo. Ejemplo JSON:

{
  Rules: [
    {
      ID: Transicion a cold storage,
      Status: Enabled,
      Prefix: ,
      Transitions: [
        { Days: 30, StorageClass: GLACIER }
      ]
    },
    {
      ID: Expiracion backups,
      Status: Enabled,
      Prefix: ,
      Expiration: { Days: 90 }
    }
  ]
}
  

Aplica esta política con:

aws --endpoint-url=https://s3.fr-par.scw.cloud s3api put-bucket-lifecycle-configuration 
  --bucket mi-backup-bucket --lifecycle-configuration file://lifecycle.json
  

8. Procedimiento de Restauración

  1. Listar objetos disponibles:
    aws s3 ls s3://mi-backup-bucket/
  2. Descargar el archivo deseado:
    aws s3 cp s3://mi-backup-bucket/backup_2024-06-01_02-30.tar.gz ./
  3. Descomprimir y restaurar base de datos:
    gunzip < backup_2024-06-01_02-30.tar.gz  mysql -u user -p mi_base_datos

9. Buenas Prácticas

  • Realiza pruebas de restauración periódicas para validar la integridad.
  • Monitorea el éxito/fracaso del cron job y establece alertas (p. ej. mediante correo o Slack).
  • Usa buckets separados para desarrollo y producción.
  • Documenta versiones del script y controla cambios mediante git.
  • Asegura la redundancia geográfica si tu negocio lo requiere (varias regiones).

10. Recursos Adicionales

© 2024 - Esta guía es de carácter informativo. Ajusta los ejemplos a tu entorno y políticas de seguridad.



Leave a Reply

Your email address will not be published. Required fields are marked *