Backups und Aufbewahrung

Die Backup-Befehle und wie lange Backups, Jobs und Audit-Einträge aufbewahrt werden

  1. Beispiel
  2. Variablen

Ändern Sie diese, um zu steuern, wie viel Verlauf die Datenbank behält und wie viele Backups auf der Festplatte bleiben.


Beispiel

Abgeschlossene Jobs 90 Tage und den Audit-Verlauf zwei Jahre lang aufbewahren. In der .env des Compose-Projekts:

JOB_RETENTION_DAYS=90
AUDIT_RETENTION_DAYS=730

Eine tägliche Aufgabe entfernt um 2:30 Uhr abgeschlossene Jobs, die älter sind, und um 3:30 Uhr Audit-Einträge. Ein laufender Job oder einer, der auf Freigabe wartet, wird nie entfernt. Beide Variablen gelten ohne Neustart, wenn sie auf der Einstellungsseite geändert werden.


Variablen

Jede Variable dieser Gruppe, mit Typ, Standardwert und Beschreibung:

Variable Auswahl/Standardwerte Kommentare
OLD_BACKUP_DAYS
number
added in version 4.0.3
Standard:
60

Backup retention (days)
a whole number where 0 disables the cleanup

When backups are made, they are kept for this many days before being removed. This applies to form backups made through the designer (not database backups).

0 keeps every restore point, matching AUDIT_RETENTION_DAYS, JOB_RETENTION_DAYS and NIGHTLY_BACKUP_RETENTION. It used to mean the opposite here - everything older than a day was removed - while the status page reported it as “never”.

NIGHTLY_BACKUP_RETENTION
number
added in version 6.1.0
Standard:
30

Nightly backups kept
a whole number where 0 disables the cleanup

Number of automated nightly backups to retain. AnsibleForms automatically creates a full backup (database + config + forms) every night at midnight. Older nightly backups beyond this count are automatically deleted. Set to 0 to disable automatic cleanup (not recommended). Only backups that actually contain a usable database dump count towards this number, so a run of failed backups can never push a good one out.

AUDIT_RETENTION_DAYS
number
added in version 6.3.0
Standard:
365

Audit log retention (days)
a whole number where 0 keeps every entry

How long entries in the audit trail are kept. The trail is append-only, so without a sweep it grows for ever; a daily task at 3:30 AM removes entries older than this. Set to 0 to keep everything.

JOB_RETENTION_DAYS
number
added in version 6.3.0
Standard:
90

Job history retention (days)
a whole number where 0 keeps jobs for ever

How long finished jobs and their output are kept. Job output can be large, so this is usually the fastest growing table in the database; the Status page reports its size. A daily task at 2:30 AM removes finished jobs older than this, together with their output. Only finished jobs are ever removed - a running job, or one awaiting approval, is kept however old it is. Defaults to 90 days since 7.6.0; before, the default 0 kept everything. Set 0 to keep every job for ever.

UPGRADE_BACKUP
number
added in version 7.0.0
Standard:
1

Back up the database before an upgrade
0, 1

Before upgrading from an older release, the worker takes a regular backup (it shows on the Backups page, named after the release), then upgrades. If the backup fails (no mysqldump, BACKUP_PATH not writable) the upgrade stops and says why, and the app does not start on a half-upgraded database. A fresh install needs no backup, and one is taken once per release. 0 upgrades without a backup. The patches applied, and by which release, are recorded in the schema_migrations table.

MYSQLDUMP_COMMAND
string
added in version 6.0.0
Standard:
mariadb-dump --ssl-verify-server-cert=OFF

Database dump command
a valid mysqldump command

MySQL dump commands and MySQL/MariaDB flavours differ, hence the need for a configurable command.

MYSQL_COMMAND
string
added in version 6.0.0
Standard:
mariadb --ssl-verify-server-cert=OFF

Database restore command
a valid mysql command

MySQL restore commands and MySQL/MariaDB flavours differ, hence the need for a configurable command.

BACKUP_COMMAND_TIMEOUT_SECONDS
number
added in version 6.3.0
Standard:
3600

Backup and restore timeout (seconds)

How long the database dump and the database restore may run before they are killed. Both used to inherit the generic 60 second command timeout, which no real database can honour. Raise it if a large database is cut short; a restore that is killed part way leaves the database partially replayed, because the dump drops and recreates each table in turn.