alphanodes.backup

Ansible 角色:备份

在 Debian 和 Ubuntu 服务器上执行每日、每周和每月的文件、MySQL 数据库和 PostgreSQL 数据库备份。

备份轮换可以配置,例如,您可以使用 祖父-父亲-儿子

Ansible Galaxy

依赖

安装

Ansible 2+

使用 ansible galaxy 命令行:

ansible-galaxy install alphanodes.backup

角色变量

可用的变量列在下面,并附有默认值(请参见 defaults/main.yml):

backup_dir: /srv/backups

备份目录。确保该磁盘分区有足够的磁盘空间。 使用引号以确保没有转换问题(例如,使用 to_nice_yaml)。

backup_dir_mode: '0755'

backup_dir 的目录权限

backup_dir_owner: root

backup_dir 的目录所有者

backup_dir_group: root

backup_dir 的目录组

backup_max_days: 7

每日备份保留的天数。这意味着仅存储 backup_max_days 设置(天)。旧的备份会自动删除。值必须大于等于 1。

backup_max_weeks: 1

每周备份保留的周数。这意味着仅存储 backup_max_weeks 设置(周)。旧的备份会自动删除。值必须大于等于 1。每周备份在每周的第一天创建。在这一天仅创建本备份(不进行每日备份,因为这会重复)。

backup_max_months: 1

每月备份保留的月数。这意味着仅存储 backup_max_months 设置(个月)。旧的备份会自动删除。值必须大于等于 1。每月备份在每月的第一天创建。在这一天仅创建本备份(不进行每日或每周备份,因为这会重复)。

backup_remote_host: ''

用于同步备份的主机名,适用于 backup_remote_transfer

backup_remote_port: ''

用于同步备份的端口,适用于 backup_remote_transfer

backup_remote_dir: ''

用于 backup_remote_transferbackup_remote_host 远程目录。

backup_remote_excludes:
  - '*.journal'
  - '.nfs*'
  - '*.tar'

这些文件会被排除在同步远程主机之外。只有在 backup_remote_transferrsync 时使用。

backup_rsync_options: '-avz --delete'

适用于 backup_remote_transfer 的 rsync 选项。

backup_remote_transfer: rsync

同步类型。可能的值是:rsync 或 lftp。

backup_remote_user: ''

远程同步用户。仅在 backup_remote_transfer 为 lftp 时使用。

backup_remote_password: ''

远程同步密码。仅在 backup_remote_transfer 为 lftp 时使用。

backup_with_borg: ''

是否应运行 backupborg。

backup_db_dump_format: .sql.gz

未压缩的 SQL 文件 (.sql) 以及 bzip2 (.bz2)、gzip (.gz) 和 xz。目前仅用于 mysql 转储。

backup_with_mysql: false

运行 MySQL(MariaDB)备份转储。所有数据库保存在单独的文件中。

backup_with_postgresql: false

运行 PostgreSQL 备份转储。所有数据库保存在单独的文件中。

backup_with_mongodb: false

运行 MongoDB 备份转储。所有数据库保存在一个压缩文件中。

backup_mongodb_options: '--archive --gzip'

MongoDB 转储选项。

backup_mysql_db_excludes:
  - performance_schema
  - information_schema
  - sys
backup_mysql_single_transaction: true
# backup_mysqldump_options: '--extended-insert=true --opt --single-transaction'

自定义 mysql 选项(始终使用 sql.gz)。如果设置,则使用本地 mysql_dump(不使用 ansible)。默认情况下未设置。

backup_postgresqldump_options: "--no-owner -Fc"

PostgreSQL 转储选项。

backup_create_hashfiles: false

创建所有备份集的哈希文件。

backup_files_unsafe_writes: false

如果 backup_files_unsafe_writes 为是且在创建 tar 文件时发现更改的文件,则不报告错误。tar 运行时将额外使用选项 --warning=no-file-removed --warning=no-file-changed --warning=no-file-ignored。 这个选项可以通过 unsafe_writes 为每个集覆盖。

backup_sets: []

文件备份的备份集。name 用作备份文件名。src 是要备份的文件目录。unsafe_writes 覆盖 backup_files_unsafe_writesexcludes 是一个可以用来排除文件或目录的列表。

backup_one_per_day_limit: true

每天仅创建一个备份集。将删除同一天的现有备份集。

#sync_master: anything

如果定义了 sync_master,将跳过备份。可用于复制环境。

backup_skip_sync_clients: true

如果定义了 sync_master,这意味着它是一个 sync_client。

backup_pre_commands: []

在备份转储之前要运行的命令列表。

backup_post_commands: []

在备份转储创建后运行的命令列表。

示例剧本

- hosts: server-name
  vars:
    backup_sets:
      - name: etc
        src: /etc
  roles:
    - alphanodes.backup

扩展示例剧本

- hosts: server-name
  vars:
    backup_max_days: 14
    backup_max_weeks: 4
    backup_max_months: 6
    backup_with_postgresql: true
    backup_dir_mode: '0770'
    backup_dir_group: postgres
    backup_sets:
      - name: etc
        src: /etc
      - name: jenkins
        src: /var/lib/jenkins
        unsafe_writes: true
        excludes:
          - builds
          - workspace
  roles:
    - alphanodes.backup

许可证

GPL 版本 3

作者信息

此角色由 AlphaNodes 于 2018 年创建。

关于项目

Run daily backups for files, MySQL databases and PostgreSQL databases

安装
ansible-galaxy install alphanodes.backup
许可证
gpl-3.0
下载
9.4k
拥有者
Professional Services with Open Source