yurihs.postgres_backup

Rola Ansible: Kopie zapasowe Postgres

Odznaka Ansible Galaxy

  • Instaluje skrypt do tworzenia kopii zapasowych baz danych PostgreSQL.
  • Obsługuje tworzenie kopii zapasowych z wielu hostów.
  • Zarządza wpisami cron dla regularnego wykonywania.

Co jest kopią zapasową?

  • Obiekty globalne (role i przestrzenie tabel), skompresowane za pomocą gzip. Może być wyłączone. Odpowiada pg_dumpall --globals-only | gzip
  • Wszystkie czytelne bazy danych, do oddzielnych plików, w formacie "custom" PostgreSQL. Odpowiada pg_dump --format=custom baza_danych

Zmienne roli (wartości domyślne)

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: '*'

Które instancje PostgreSQL tworzyć kopię zapasową (informacje o połączeniu) i (opcjonalnie) jak często.

Te wpisy są przechowywane w plikach konfiguracyjnych, więc należy wziąć pod uwagę konsekwencje bezpieczeństwa związane z przechowywaniem haseł w postaci jawnej (jeśli je podasz za pomocą pg_password, zobacz przykłady poniżej). Domyślnie te pliki będą dostępne tylko dla ich właściciela (zazwyczaj root).

Przy usuwaniu elementu z listy pamiętaj, aby użyć parametru state, aby usunąć plik konfiguracyjny i zadanie cron z systemu (patrz przykłady poniżej).

postgres_backup_config_dir: /etc/postgres_backup

Gdzie przechowywać konfigurację.

postgres_backup_default_output_dir: /srv/postgres_backup

Gdzie przechowywać kopie zapasowe. Każdy wpis będzie miał swoją własną podkatalogę tutaj. Ta zmienna może być nadpisana przez każdy wpis na liście kopii zapasowych.

postgres_backup_default_date_format: "%Y-%m-%d_%H-%M"

Jak sformatować folder wyjściowy dla każdej kopii zapasowej. Może być nadpisane przez każdy wpis na liście kopii zapasowych.

Przykłady

Godzinna kopia zapasowa lokalnego serwera PostgreSQL

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: '*'

Ta konfiguracja będzie skutkować następującą 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

Brak automatycznych kopii zapasowych, tylko instalacja skryptu i konfiguracji

postgres_backup_list:
  - name: default
    pg_username: postgres
    pg_hostname: localhost
    pg_port: 5432

Codzienna kopia zapasowa zdalnego serwera, z użyciem hasła i zapis do innego katalogu

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: '*'

Ta konfiguracja będzie skutkować następującą strukturą:

/opt/
  prod_db_bak/
    2019-01-01_00-00/
      users.custom
      posts.custom
    2019-01-02_00-00/
      users.custom
      posts.custom

Usunięcie wcześniej zdefiniowanej konfiguracji

postgres_backup_list:
  - name: production
    state: absent
O projekcie

Backup PostgreSQL databases

Zainstaluj
ansible-galaxy install yurihs.postgres_backup
Licencja
mit
Pobrania
86
Właściciel