yurihs.postgres_backup

Rol de Ansible: Copias de Seguridad de Postgres

Insignia de Ansible Galaxy

  • 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
Acerca del proyecto

Backup PostgreSQL databases

Instalar
ansible-galaxy install yurihs.postgres_backup
Licencia
mit
Descargas
86
Propietario