yurihs.postgres_backup
Rol de Ansible: Copias de Seguridad de Postgres
- Instala un script para hacer copias de seguridad de bases de datos PostgreSQL.
- Soporta la copia de varios hosts.
- Administra entradas de cron para ejecución regular.
¿Qué se respalda?
- Objetos globales (roles y tablespaces), comprimidos usando gzip. Puede deshabilitarse. Equivalente a
pg_dumpall --globals-only | gzip
- Todas las bases de datos legibles, en archivos separados, usando el formato "custom" de PostgreSQL. Equivalente a
pg_dump --format=custom database
Variables del rol (valores por defecto)
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: '*'
Qué instancias de PostgreSQL respaldar (información de conexión) y (opcionalmente) con qué frecuencia.
Estas entradas se almacenan en archivos de configuración, por lo que debes considerar las implicaciones de seguridad de almacenar contraseñas en texto plano (si las especificas usando pg_password
, consulta los ejemplos abajo). Por defecto, estos archivos serán legibles solo por su propietario (normalmente root
).
Al eliminar un elemento de la lista, recuerda usar el parámetro state
para eliminar el archivo de configuración y el trabajo de cron del sistema (consulta los ejemplos abajo).
postgres_backup_config_dir: /etc/postgres_backup
Dónde almacenar la configuración.
postgres_backup_default_output_dir: /srv/postgres_backup
Dónde almacenar las copias de seguridad. Cada entrada tendrá su propio directorio dentro de aquí. Esta variable puede ser sobrescrita por cada entrada en la lista de respaldo.
postgres_backup_default_date_format: "%Y-%m-%d_%H-%M"
Cómo formatear el directorio de salida para cada copia de seguridad. Puede ser sobrescrita por cada entrada en la lista de respaldo.
Ejemplos
Copia de seguridad horaria de un servidor PostgreSQL local
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: '*'
Esta configuración resultará en la siguiente estructura:
/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
Sin copias de seguridad automáticas, solo instalar el script y la configuración
postgres_backup_list:
- name: default
pg_username: postgres
pg_hostname: localhost
pg_port: 5432
Copia de seguridad diaria de un servidor remoto, usando una contraseña, y salida a un directorio diferente
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: '*'
Esta configuración resultará en la siguiente estructura:
/opt/
prod_db_bak/
2019-01-01_00-00/
users.custom
posts.custom
2019-01-02_00-00/
users.custom
posts.custom
Eliminar una configuración previamente definida
postgres_backup_list:
- name: production
state: absent
ansible-galaxy install yurihs.postgres_backup