yurihs.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.postgres_backup
许可证
mit
下载
86
拥有者