yurihs.postgres_backup

Ansible Rolle: PostgreSQL Backups

Ansible Galaxy Badge

  • 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
Über das Projekt

Backup PostgreSQL databases

Installieren
ansible-galaxy install yurihs.postgres_backup
GitHub Repository
Lizenz
mit
Downloads
86
Besitzer