yurihs.postgres_backup
Ansible Rolle: PostgreSQL Backups
- Installiert ein Skript zum Sichern von PostgreSQL-Datenbanken.
- Unterstützt das Backup mehrerer Hosts.
- Verwaltet Cron-Einträge für die regelmäßige Ausführung.
Was wird gesichert?
- Globale Objekte (Rollen und Tablespaces), komprimiert mit gzip. Kann deaktiviert werden. Entspricht
pg_dumpall --globals-only | gzip
- Alle lesbaren Datenbanken in separaten Dateien, im "benutzerdefinierten" PostgreSQL-Format. Entspricht
pg_dump --format=custom database
Rollenvariablen (Standardwerte)
postgres_backup_list:
- name: default
pg_username: postgres
pg_hostname: localhost
pg_port: 5432
do_backup_globals: true
cron:
minute: '0'
hour: '*'
day: '*'
month: '*'
weekday: '*'
Welche PostgreSQL-Instanzen gesichert werden sollen (Verbindungsinformationen) und (optional) wie oft.
Diese Einträge werden in Konfigurationsdateien gespeichert, daher sollten Sie die Sicherheitsimplikationen der Speicherung von Passwörtern im Klartext (wenn Sie sie mit pg_password
angeben, siehe Beispiele unten) berücksichtigen. Standardmäßig sind diese Dateien nur für ihren Besitzer (normalerweise root
) lesbar.
Wenn Sie einen Eintrag von der Liste entfernen, denken Sie daran, den state
-Parameter zu verwenden, um die Konfigurationsdatei und den Cron-Job aus dem System zu entfernen (siehe Beispiele unten).
postgres_backup_config_dir: /etc/postgres_backup
Wo die Konfiguration gespeichert werden soll.
postgres_backup_default_output_dir: /srv/postgres_backup
Wo die Backups gespeichert werden. Jeder Eintrag erhält sein eigenes Verzeichnis hier. Diese Variable kann von jedem Eintrag in der Backup-Liste überschrieben werden.
postgres_backup_default_date_format: "%Y-%m-%d_%H-%M"
Wie das Ausgabeverzeichnis für jedes Backup formatiert werden soll. Kann von jedem Eintrag in der Backup-Liste überschrieben werden.
Beispiele
Stündliches Backup eines lokalen PostgreSQL-Servers
postgres_backup_list:
- name: default
pg_username: postgres
pg_hostname: localhost
pg_port: 5432
do_backup_globals: true
cron:
minute: '0'
hour: '*'
day: '*'
month: '*'
weekday: '*'
Diese Konfiguration führt zu folgender Struktur:
/srv/
postgres_backup/
default/
2019-01-01_00-00/
globals.sql.gz
database-a.custom
database-b.custom
2019-01-01_01-00/
globals.sql.gz
database-a.custom
database-b.custom
Keine automatischen Backups, nur das Skript und die Konfiguration installieren
postgres_backup_list:
- name: default
pg_username: postgres
pg_hostname: localhost
pg_port: 5432
Tägliches Backup eines entfernten Servers, mit Passwort, und Ausgabe in ein anderes Verzeichnis
postgres_backup_list:
- name: production
pg_username: backup
pg_password: "hunter2"
pg_hostname: db.example.com
pg_port: 5432
do_backup_globals: false
output_dir: /opt/prod_db_bak
cron:
minute: '0'
hour: '0'
day: '*'
month: '*'
weekday: '*'
Diese Konfiguration führt zu folgender Struktur:
/opt/
prod_db_bak/
2019-01-01_00-00/
users.custom
posts.custom
2019-01-02_00-00/
users.custom
posts.custom
Eine zuvor definierte Konfiguration entfernen
postgres_backup_list:
- name: production
state: absent
ansible-galaxy install yurihs.postgres_backup