postgres_backup
Ansible Роль: Резервное копирование Postgres
- Устанавливает скрипт для резервного копирования баз данных 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
ansible-galaxy install yurihs/ansible-role-postgres-backup