memiah.mysql-s3-backup

MySQL S3 Backup

Un Role de Ansible que instala la Interfaz de Línea de Comandos de Amazon AWS y configura un script bash para subir copias de seguridad individuales de bases de datos MySQL a Amazon S3.

Requisitos

El rol asume que ya tienes MySQL instalado.

Si activas GPG, también necesitarás haber creado esas credenciales.

Se recomienda que crees un usuario con permisos limitados. A continuación hay una política llamada AmazonS3CreateReadWriteAccess-[nombre-del-bucket] que se puede usar para proporcionar acceso limitado (crear/listar/poner) al bucket [nombre-del-bucket].

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

Además, puedes considerar la versión y los ciclos de vida del bucket en S3.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml):

mysql_backup_name: "mysql-s3-backup"

Nombre usado para identificar este rol, utilizado para el directorio predeterminado, el archivo y el nombre del perfil de AWS.

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

Directorio donde se almacenará el script de copia de seguridad y la configuración.

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 está habilitado y programado para ejecutarse a las 23:00 todos los días y no se enviará un correo electrónico a un destinatario. Si deseas que la salida se envíe por correo, establece esto en la dirección de correo del destinatario.

mysql_backup_aws_profile: "{{ mysql_backup_name }}"

Para separación, creamos un nuevo perfil de AWS para el contexto de este script, puedes establecer esto en "default" para ignorar perfiles.

mysql_backup_aws_access_key: "[clave-de-acceso]"

Tu clave de acceso de Amazon AWS.

mysql_backup_aws_secret_key: "[clave-secreta]"

Tu clave secreta de Amazon AWS.

mysql_backup_aws_region: eu-west-1

Nombre de la región donde se encuentra el bucket S3.

mysql_backup_aws_format: text

Formato de salida de la CLI de AWS.

mysql_backup_gpg_secret_key: False

Clave secreta GPG para encriptar las copias de seguridad.

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

Ubicación utilizada para almacenar la clave secreta GPG.

mysql_backup_system_user: root

Usuario que será dueño y ejecutará el script de copia de seguridad, así como el trabajo de cron.

mysql_backup_config: []

Personalizaciones para el script de copia de seguridad en sí (los valores usan la sintaxis bash).

  • timestamp: "$(date +"%Y-%m-%d_%H%M")" Fecha y hora utilizadas para crear directorios de respaldo "YYYY-MM-DD_HHII".
  • backup_dir: "/tmp/mysql-s3-backups/${timestamp}" Ruta del directorio local de respaldo utilizada para almacenar archivos antes de la carga.
  • backup_dir_remove: "true" Eliminar el directorio de respaldo local al completar el script.
  • aws_bucket: "mysql-s3-backups" Nombre predeterminado del bucket S3 de AWS.
  • aws_dir: "$timestamp" Directora predeterminada de AWS para almacenar copias de seguridad.
  • aws_extra_arguments: "--endpoint https://s3-compatable-endpoint.example.com" Argumentos adicionales para pasar a la CLI de AWS.
  • aws_enabled: "true" Habilitar la carga en Amazon S3; si es falso, la bandera "backup_dir_remove" se establecerá en falso.
  • aws_profile: "mysql-s3-backup" Establecer el perfil de AWS a utilizar (~/.aws/credentials y ~/.aws/config).
  • mysql_slave: "false" Establecer en verdadero si se realiza una copia de seguridad desde un servidor esclavo de MySQL; esto detendrá el esclavo y lo iniciará de nuevo cuando termine el script.
  • mysql_using_rds: "false" Establecer en verdadero si se realiza una copia de seguridad desde una réplica de lectura de RDS; esto asegurará que utilicemos las funciones mysql.rds_stop_replication y mysql.rds_start_replication en lugar de los comandos estándar STOP / START SLAVE (que no tienen los permisos necesarios en RDS).
  • mysql_use_defaults_file: "true" Usar el archivo de configuración predeterminado de MySQL.
  • mysql_defaults_file: "" Especificar la ubicación del archivo de valores predeterminados, por ejemplo, "/etc/my.cnf".
  • mysql_user: "", mysql_password: "", mysql_host: "" Si mysql_use_defaults_file es falso, intentará usar estos parámetros para conectarse a MySQL.
  • mysql_exclude: "information_schema|performance_schema|mysql|sys" Lista de bases de datos a excluir de la exportación, esta es una lista separada por tuberías (RegEx).
  • mysqldump_args: "--triggers --routines --force --opt --add-drop-database" Flags predeterminados utilizados para el volcado de la base de datos.
  • gpg_enabled: "false" Si es verdadero, las copias de seguridad se cifrarán con GPG y se añadirá el sufijo ".gpg" a cada uno de los archivos de copia de seguridad.
  • gpg_args: "--encrypt --batch --trust-model always" Flags predeterminados utilizados para la encriptación GPG.
  • gpg_recipient: "" Destinatario de los archivos encriptados con clave pública.
  • gpg_sign: "false" Bandera para forzar la firma de las copias de seguridad.
  • gpg_signer: "" Clave GPG predeterminada para firmar.

Dependencias

Ejemplo de Playbook

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

Dentro de vars/main.yml:

mysql_backup_aws_access_key: "clave_acceso_aqui"
mysql_backup_aws_secret_key: "clave_secreta_aqui"
mysql_backup_aws_region: eu-west-1
mysql_backup_config:
  aws_profile: "{{ mysql_backup_aws_profile }}"
  aws_bucket: "nombre_bucket_aqui"
  backup_dir: "{{ mysql_backup_dir }}/backups/${timestamp}"

Licencia

MIT / BSD

Información del Autor

Este rol fue creado en 2016 por Memiah Limited.

Acerca del proyecto

MySQL to Amazon S3 backup.

Instalar
ansible-galaxy install memiah.mysql-s3-backup
Licencia
Unknown
Descargas
699
Propietario