yurihs.postgres_backup
Rola Ansible: Kopie zapasowe Postgres
- 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
ansible-galaxy install yurihs.postgres_backup