Backup y recuperación
MPCIUM ofrece capacidades robustas de backup y recuperación para garantizar que los datos de tu clúster MPC distribuido estén protegidos contra pérdidas. El sistema de backup usa una estrategia de backup incremental con cifrado para almacenar y proteger de forma eficiente el estado de tu base de datos, minimizando el uso de recursos.

Importante: prueba siempre tus procedimientos de backup y recuperación en un entorno que no sea de producción antes de implementarlos en producción.
Configuración de backups
MPCIUM admite una configuración de backups ajustable en tu archivo config.yaml:
Configuración de backups
# Backup Configuration
backup_enabled: true # Enable/disable automatic backups (default: true)
backup_period_seconds: 300 # How often to perform backups in seconds (default: 300)
backup_dir: "./backups" # Directory where encrypted backups are stored
Parámetros de configuración
backup_enabled (boolean)
Controla si se realizan backups automáticos. Configúralo en false para desactivar los backups por completo.
backup_period_seconds (integer)
Define el intervalo entre backups automáticos, en segundos. El valor predeterminado de 300 segundos (5 minutos) ofrece un buen equilibrio entre la protección de los datos y el rendimiento del sistema.
backup_dir (string)
Especifica el directorio donde se almacenan los archivos de backup cifrados. Asegúrate de que este directorio tenga los permisos adecuados y suficiente espacio en disco.
Estrategia de backup
MPCIUM implementa una estrategia de backup incremental que almacena de forma eficiente solo los cambios desde el último backup, lo que reduce los requisitos de almacenamiento y el tiempo de backup. Este enfoque garantiza que cada backup no sea un duplicado de los anteriores, lo que ahorra una cantidad significativa de espacio de almacenamiento y ancho de banda de red sin dejar de proteger completamente los datos.
Estructura de los archivos de backup
Los archivos de backup se almacenan en el directorio de backup configurado con la siguiente convención de nombres:
node0/
└── backups/
├── backup-node0-2025-07-28_20-46-39-1.enc
├── backup-node0-2025-07-28_20-48-39-2.enc
├── backup-node0-2025-07-28_20-49-39-3.enc
└── latest.version
Formato de los archivos de backup
Cada archivo de backup contiene:
- Cambios incrementales de la base de datos desde el último backup (no duplicados completos)
- Estado cifrado de la base de datos con cifrado AES-256-GCM para mayor seguridad durante el tránsito y el almacenamiento
- Metadatos, que incluyen la marca de tiempo de creación, los parámetros de cifrado y la información de versión
- Cadena de actualizaciones incrementales que puede reconstruirse para restaurar el estado completo de la base de datos
Ejemplo de metadatos de backup
{
"algo": "AES-256-GCM",
"nonce_b64": "MgDMCSqKNujD+9na",
"created_at": "2025-07-28T20:46:39+07:00",
"since": 0,
"next_since": 6,
"encryption_key_id": "bd1937594bea2580"
}
Seguridad: los archivos de backup se cifran con la misma badger_password que se usa para cifrar la base de datos, lo que garantiza que tus datos de backup permanezcan seguros durante el tránsito y el almacenamiento. El enfoque incremental combinado con el cifrado ofrece tanto eficiencia de recursos como protección de los datos.
Procedimientos de recuperación
Usar mpcium-cli recover
Para recuperar tu base de datos de MPCIUM a partir de archivos de backup cifrados, usa el comando mpcium-cli recover:
Comando de recuperación
mpcium-cli recover --help
NAME:
mpcium recover - Recover database from encrypted backup files
USAGE:
mpcium recover [command [command options]]
OPTIONS:
--backup-dir string, -b string Directory containing encrypted backup files
--recovery-path string, -r string Target path for database recovery
--backup-encryption-key string, -k string Encryption key for backup files (will prompt if not provided)
--force, -f Force overwrite if recovery path already exists (default: false)
--help, -h show help
Proceso de recuperación
- Detén el nodo de MPCIUM para asegurarte de que no haya operaciones activas en la base de datos
- Ejecuta el comando de recuperación con los parámetros adecuados
- Actualiza la configuración para que apunte a la base de datos recuperada
- Reinicia el nodo con los datos recuperados
Ejemplo de recuperación
# Step 1: Stop the MPCIUM node
# Step 2: Recover the database
mpcium-cli recover \
--backup-dir backups/ \
--recovery-path restore_db/node0
# Step 3: Update config.yaml
# Change db_path to: db_path: "restore_db"
# Step 4: Restart the node
mpcium start -n node0
Integración con AWS S3
MPCIUM admite AWS S3 para el almacenamiento de backups en la nube, lo que aporta redundancia adicional y capacidades de recuperación ante desastres.
Configurar el backup en S3
1. Crea un bucket de S3
Crear un bucket de S3
aws s3 mb s3://node0-backup --region ap-southeast-1
2. Configura los permisos de S3
Asegúrate de que tus credenciales de AWS tengan los permisos adecuados para las operaciones de S3:
Ejemplo de política de S3
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::node0-backup",
"arn:aws:s3:::node0-backup/*"
]
}
]
}
Operaciones de backup en S3
Sube los backups locales a S3
Subir a S3
# Sync local backup folder to S3
aws s3 sync ./backups s3://node0-backup
Descarga los backups desde S3
Descargar desde S3
# Sync from S3 to local folder
aws s3 sync s3://node0-backup ./backups
Verifica el backup en S3
Verificar el contenido de S3
# List S3 backup contents
aws s3 ls s3://node0-backup --recursive
# Check backup file details
aws s3api head-object --bucket node0-backup --key backup-node0-2025-07-28_20-46-39-1.enc
Former: Product Manager at TomoChain labs
Backups automatizados
Configuración de cron jobs
Configura backups automatizados en S3 mediante cron jobs para garantizar una sincronización periódica con el almacenamiento en la nube:
Configuración de cron jobs
# Edit crontab
crontab -e
# Add backup job (runs every hour)
0 * * * * /usr/local/bin/backup-mpcium.sh
# Add daily backup verification
0 2 * * * /usr/local/bin/verify-backup.sh
Ejemplo de script de backup
Crea un script de backup para automatizar el proceso de sincronización con S3:
Script de backup
#!/bin/bash
# /usr/local/bin/backup-mpcium.sh
# Configuration
NODE_NAME="node0"
S3_BUCKET="node0-backup"
BACKUP_DIR="/opt/mpcium/node0/backups"
LOG_FILE="/var/log/mpcium-backup.log"
# Log function
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
# Start backup
log "Starting MPCIUM backup to S3"
# Sync local backups to S3
if aws s3 sync "$BACKUP_DIR" "s3://$S3_BUCKET" --delete; then
log "Backup completed successfully"
else
log "Backup failed"
exit 1
fi
# Verify backup
if aws s3 ls "s3://$S3_BUCKET" | grep -q "backup-$NODE_NAME"; then
log "Backup verification successful"
else
log "Backup verification failed"
exit 1
fi
Script de verificación
Crea un script para verificar la integridad de los backups:
Script de verificación
#!/bin/bash
# /usr/local/bin/verify-backup.sh
# Configuration
S3_BUCKET="node0-backup"
LOG_FILE="/var/log/mpcium-backup-verify.log"
# Log function
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
# Check S3 bucket accessibility
if aws s3 ls "s3://$S3_BUCKET" > /dev/null 2>&1; then
log "S3 bucket accessible"
else
log "S3 bucket not accessible"
exit 1
fi
# Count backup files
BACKUP_COUNT=$(aws s3 ls "s3://$S3_BUCKET" --recursive | grep -c "\.enc$")
log "Found $BACKUP_COUNT backup files in S3"
# Check for recent backups (within last 24 hours)
RECENT_BACKUPS=$(aws s3 ls "s3://$S3_BUCKET" --recursive | grep "$(date '+%Y-%m-%d')" | wc -l)
log "Found $RECENT_BACKUPS backups from today"
if [ "$RECENT_BACKUPS" -eq 0 ]; then
log "WARNING: No recent backups found"
exit 1
fi
Monitoreo y alertas
Configura el monitoreo de tus procesos de backup:
Configuración del monitoreo
# Check backup script exit status
if [ $? -ne 0 ]; then
# Send alert (example with curl to webhook)
curl -X POST -H "Content-Type: application/json" \
-d '{"text":"MPCIUM backup failed"}' \
https://your-webhook-url.com/alert
fi
Buena práctica: prueba periódicamente tus procedimientos de backup y recuperación en un entorno de pruebas para asegurarte de que funcionen correctamente cuando los necesites.