fase 3 (operacion): backups automaticos por instancia con descubrimiento dinamico, verificacion de integridad, retencion GFS 14/8/6, prueba de restauracion semanal, timers systemd y logrotate; panel CLI multi-instancia (admin_instancias.py) + doc de operacion y restauracion
This commit is contained in:
17
infra/ops/systemd/backup-instancia@.service
Normal file
17
infra/ops/systemd/backup-instancia@.service
Normal file
@@ -0,0 +1,17 @@
|
||||
[Unit]
|
||||
Description=SKEEN — backup de la instancia %i (unit odoo-%i.service)
|
||||
Documentation=file:/root/skeen-proyecto/docs/producto/operacion-instancia.md
|
||||
After=network.target postgresql.service
|
||||
Wants=postgresql.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
User=root
|
||||
# Plantilla opcional para programar una instancia concreta:
|
||||
# systemctl enable --now backup-instancia@clinica2.timer
|
||||
ExecStart=/root/skeen-proyecto/infra/ops/backup_instancias.sh --instancia %i
|
||||
Nice=10
|
||||
IOSchedulingClass=best-effort
|
||||
IOSchedulingPriority=6
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
12
infra/ops/systemd/backup-instancia@.timer
Normal file
12
infra/ops/systemd/backup-instancia@.timer
Normal file
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=SKEEN — backup diario de una instancia (%i)
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 03:40:00
|
||||
RandomizedDelaySec=1800
|
||||
AccuracySec=1min
|
||||
Persistent=true
|
||||
Unit=backup-instancia@%i.service
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
16
infra/ops/systemd/skeen-backup-verify.service
Normal file
16
infra/ops/systemd/skeen-backup-verify.service
Normal file
@@ -0,0 +1,16 @@
|
||||
[Unit]
|
||||
Description=SKEEN — backup semanal CON prueba de restauración
|
||||
Documentation=file:/root/skeen-proyecto/docs/producto/operacion-instancia.md
|
||||
After=network.target postgresql.service
|
||||
Wants=postgresql.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
User=root
|
||||
# --verificar restaura a una DB temporal y compara conteos (requiere espacio).
|
||||
ExecStart=/root/skeen-proyecto/infra/ops/backup_instancias.sh --verificar
|
||||
Nice=10
|
||||
IOSchedulingClass=best-effort
|
||||
IOSchedulingPriority=6
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
13
infra/ops/systemd/skeen-backup-verify.timer
Normal file
13
infra/ops/systemd/skeen-backup-verify.timer
Normal file
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=SKEEN — verificación semanal de backups (restauración real)
|
||||
Documentation=file:/root/skeen-proyecto/docs/producto/operacion-instancia.md
|
||||
|
||||
[Timer]
|
||||
OnCalendar=Sun *-*-* 04:40:00
|
||||
RandomizedDelaySec=1800
|
||||
AccuracySec=1min
|
||||
Persistent=true
|
||||
Unit=skeen-backup-verify.service
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
17
infra/ops/systemd/skeen-backup.service
Normal file
17
infra/ops/systemd/skeen-backup.service
Normal file
@@ -0,0 +1,17 @@
|
||||
[Unit]
|
||||
Description=SKEEN — backup automático de todas las instancias Odoo
|
||||
Documentation=file:/root/skeen-proyecto/docs/producto/operacion-instancia.md
|
||||
After=network.target postgresql.service
|
||||
Wants=postgresql.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
User=root
|
||||
# Descubre instancias por systemd (odoo-*.service); no hardcodea la lista.
|
||||
ExecStart=/root/skeen-proyecto/infra/ops/backup_instancias.sh
|
||||
Nice=10
|
||||
IOSchedulingClass=best-effort
|
||||
IOSchedulingPriority=6
|
||||
# El script ya registra en /var/log/skeen-backup.log; journal sólo como eco.
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
14
infra/ops/systemd/skeen-backup.timer
Normal file
14
infra/ops/systemd/skeen-backup.timer
Normal file
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=SKEEN — backup diario de instancias (~03:20)
|
||||
Documentation=file:/root/skeen-proyecto/docs/producto/operacion-instancia.md
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 03:20:00
|
||||
RandomizedDelaySec=1800
|
||||
AccuracySec=1min
|
||||
# Si la VPS estuvo apagada a la hora prevista, corre al arrancar.
|
||||
Persistent=true
|
||||
Unit=skeen-backup.service
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
Reference in New Issue
Block a user