alphanodes.backup
Ansible 角色:备份
在 Debian 和 Ubuntu 服务器上执行每日、每周和每月的文件、MySQL 数据库和 PostgreSQL 数据库备份。
备份轮换可以配置,例如,您可以使用 祖父-父亲-儿子
依赖
无
安装
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_transfer
的 backup_remote_host
远程目录。
backup_remote_excludes:
- '*.journal'
- '.nfs*'
- '*.tar'
这些文件会被排除在同步远程主机之外。只有在 backup_remote_transfer
为 rsync
时使用。
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_writes
。excludes
是一个可以用来排除文件或目录的列表。
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