yurihs.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