postgres_backup

Ansible Роль: Резервное копирование Postgres

Ansible Galaxy Badge

  • Устанавливает скрипт для резервного копирования баз данных PostgreSQL.
  • Поддерживает резервное копирование нескольких хостов.
  • Управляет записями cron для регулярного выполнения.

Что бэкапится?

  • Глобальные объекты (роли и табличные пространства), сжимаемые с помощью gzip. Может быть отключено. Эквивалентно pg_dumpall --globals-only | gzip
  • Все читаемые базы данных, в отдельные файлы, с использованием "пользовательского" формата PostgreSQL. Эквивалентно pg_dump --format=custom database

Переменные роли (значения по умолчанию)

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

Какие экземпляры PostgreSQL необходимо резервировать (информация о подключении) и (опционально) как часто.

Эти записи хранятся в конфигурационных файлах, поэтому вам следует учитывать вопросы безопасности при хранении паролей в открытом виде (если вы укажете их с помощью pg_password, смотрите примеры ниже). По умолчанию эти файлы будут доступны только их владельцу (обычно root).

При удалении элемента из списка не забудьте использовать параметр state, чтобы удалить конфигурационный файл и задачу cron из системы (смотрите примеры ниже).

postgres_backup_config_dir: /etc/postgres_backup

Где хранить конфигурацию.

postgres_backup_default_output_dir: /srv/postgres_backup

Где хранить резервные копии. Каждая запись будет иметь свою директорию внутри здесь. Эта переменная может быть переопределена каждой записью в списке резервного копирования.

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

Как форматировать выходную директорию для каждой резервной копии. Может быть переопределено каждой записью в списке резервного копирования.

Примеры

Почасовое резервное копирование локального сервера 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: '*'

Эта конфигурация приведет к следующей структуре:

/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

Без автоматических резервных копий, просто установка скрипта и конфигурации

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

Ежедневное резервное копирование удаленного сервера, с использованием пароля и выходом в другую директорию

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

Эта конфигурация приведет к следующей структуре:

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

Удаление ранее определенной конфигурации

postgres_backup_list:
  - name: production
    state: absent
О проекте

Backup PostgreSQL databases

Установить
ansible-galaxy install yurihs/ansible-role-postgres-backup
Лицензия
mit
Загрузки
77
Владелец