memiah.mysql-s3-backup

MySQL S3备份

一个Ansible角色,用于安装亚马逊AWS命令行界面,并配置一个bash脚本,将单个MySQL数据库备份上传到亚马逊S3。

要求

该角色假设您已经安装了MySQL。

如果启用了GPG,您也需要创建这些凭证。

建议您创建一个具有严格权限的用户。以下是一个名为 AmazonS3CreateReadWriteAccess-[bucket-name] 的策略,可以用于提供对存储桶 [bucket-name] 的有限(创建/列出/放置)访问。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [ "s3:CreateBucket", "s3:ListBucket" ],
            "Resource": [ "arn:aws:s3:::[bucket-name]" ]
        },
        {
            "Effect": "Allow",
            "Action": [ "s3:PutObject" ],
            "Resource": [ "arn:aws:s3:::[bucket-name]/*" ]
        }
    ]
}

此外,您可能希望考虑S3中的存储桶版本控制和生命周期管理。

角色变量

可用的变量如下所列,以及默认值(请参见 defaults/main.yml):

mysql_backup_name: "mysql-s3-backup"

用于识别此角色的名称,作为默认目录、文件和AWS配置文件的命名。

mysql_backup_dir: "/opt/{{ mysql_backup_name }}"

备份脚本和配置将存储的目录。

mysql_backup_cronfile: "{{ mysql_backup_name }}"
mysql_backup_cron_enabled: true
mysql_backup_cron_hour: 23
mysql_backup_cron_minute: 0
mysql_backup_cron_email: false

Cron任务启用,并设置为每天23:00运行,不会发送邮件给接收人。如果您希望将输出通过邮件发送,请将此设置为接收人电子邮件地址。

mysql_backup_aws_profile: "{{ mysql_backup_name }}"

为了分离,我们为此脚本上下文创建一个新的AWS配置文件,您可以将其设置为 "default" 以忽略配置文件。

mysql_backup_aws_access_key: "[accesss-key]"

您的亚马逊AWS访问密钥。

mysql_backup_aws_secret_key: "[secret-key]"

您的亚马逊AWS密钥。

mysql_backup_aws_region: eu-west-1

存储桶所在的区域名称。

mysql_backup_aws_format: text

AWS CLI的输出格式。

mysql_backup_gpg_secret_key: False

用于加密备份的GPG密钥。

mysql_backup_gpg_secret_dest: "~/{{ mysql_backup_name }}-gpg.asc"

用于存储GPG密钥的位置。

mysql_backup_system_user: root

将拥有并运行备份脚本和cron任务的用户。

mysql_backup_config: []

对备份脚本的自定义设置(值使用bash语法)。

  • timestamp: "$(date +"%Y-%m-%d_%H%M")" 创建备份目录时使用的日期和时间,格式为 "YYYY-MM-DD_HHII"。
  • backup_dir: "/tmp/mysql-s3-backups/${timestamp}" 本地备份目录路径,用于在上传之前存储文件。
  • backup_dir_remove: "true" 脚本完成后删除本地备份目录。
  • aws_bucket: "mysql-s3-backups" 默认AWS S3存储桶名称。
  • aws_dir: "$timestamp" 默认AWS目录用于存储备份。
  • aws_extra_arguments: "--endpoint https://s3-compatable-endpoint.example.com" 传递给AWS CLI的额外参数。
  • aws_enabled: "true" 启用上传到亚马逊S3。如果设置为false,"backup_dir_remove" 标志将被设置为false。
  • aws_profile: "mysql-s3-backup" 设置要使用的AWS配置文件(~/.aws/credentials 和 ~/.aws/config)。
  • mysql_slave: "false" 如果从MySQL从服务器备份,则设置为true,这将停止从服务器,并在脚本完成时重新启动它。
  • mysql_using_rds: "false" 如果从RDS只读副本备份,则设置为true,这将确保使用mysql.rds_stop_replication和mysql.rds_start_replication函数,而不是标准的STOP / START SLAVE命令(后者在RDS上没有必要的权限)。
  • mysql_use_defaults_file: "true" 使用默认的MySQL配置文件。
  • mysql_defaults_file: "" 指定默认文件位置,例如 "/etc/my.cnf"。
  • mysql_user: "", mysql_password: "", mysql_host: "" 如果mysql_use_defaults_file为false,它将尝试使用这些参数连接到MySQL。
  • mysql_exclude: "information_schema|performance_schema|mysql|sys" 要排除从导出中列出的数据库,这是一个以管道分隔的列表(正则表达式)。
  • mysqldump_args: "--triggers --routines --force --opt --add-drop-database" 数据库转储的默认标志。
  • gpg_enabled: "false" 如果为true,备份将使用GPG加密,并在每个备份文件后添加后缀 ".gpg"。
  • gpg_args: "--encrypt --batch --trust-model always" 用于GPG加密的默认标志。
  • gpg_recipient: "" 公钥加密文件的接收者。
  • gpg_sign: "false" 强制备份签名的标志。
  • gpg_signer: "" 默认的GPG签名密钥。

依赖项

示例剧本

- hosts: mysql-servers
  vars_files:
    - vars/main.yml
  roles:
     - memiah.mysql-s3-backup

vars/main.yml

mysql_backup_aws_access_key: "access_key_here"
mysql_backup_aws_secret_key: "secret_key_here"
mysql_backup_aws_region: eu-west-1
mysql_backup_config:
  aws_profile: "{{ mysql_backup_aws_profile }}"
  aws_bucket: "bucket_name_here"
  backup_dir: "{{ mysql_backup_dir }}/backups/${timestamp}"

许可证

MIT / BSD

作者信息

此角色由 Memiah Limited 于2016年创建。

关于项目

MySQL to Amazon S3 backup.

安装
ansible-galaxy install memiah.mysql-s3-backup
许可证
Unknown
下载
699
拥有者