memiah.mysql-s3-backup

Sauvegarde MySQL S3

Un rôle Ansible qui installe l'Interface de Ligne de Commande d'Amazon AWS et configure un script bash pour télécharger des sauvegardes individuelles de bases de données MySQL sur Amazon S3.

Exigences

Ce rôle suppose que vous avez déjà MySQL installé.

Si vous activez GPG, vous devez également avoir créé ces identifiants.

Il est recommandé de créer un utilisateur avec des permissions réduites. Vous trouverez ci-dessous une politique nommée AmazonS3CreateReadWriteAccess-[nom-bucket] qui peut être utilisée pour fournir un accès limité (créer/lister/mettre) au bucket [nom-bucket].

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

De plus, vous voudrez peut-être envisager la versionnage et les cycles de vie des buckets dans S3.

Variables de Rôle

Les variables disponibles sont listées ci-dessous, avec les valeurs par défaut (voir defaults/main.yml):

  • mysql_backup_name: "mysql-s3-backup"

Nom utilisé pour identifier ce rôle, utilisé pour le répertoire par défaut, le nom de fichier et le nom du profil AWS.

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

Répertoire où le script de sauvegarde et la configuration seront stockés.

  • 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 activé et exécuté à 23h00 chaque jour et n'envoie pas d'email à un destinataire. Si vous souhaitez recevoir le rapport par email, réglez ceci sur l'adresse email du destinataire.

  • mysql_backup_aws_profile: "{{ mysql_backup_name }}"

Pour séparer les contextes, nous créons un nouveau profil AWS pour ce script, vous pouvez définir ceci sur "default" pour ignorer les profils.

  • mysql_backup_aws_access_key: "[cle-d'accès]"

Votre clé d'accès Amazon AWS.

  • mysql_backup_aws_secret_key: "[cle-secrète]"

Votre clé secrète Amazon AWS.

  • mysql_backup_aws_region: eu-west-1

Nom de la région où se trouve le bucket S3.

  • mysql_backup_aws_format: text

Format de sortie de l'AWS CLI.

  • mysql_backup_gpg_secret_key: False

Clé secrète GPG utilisée pour crypter les sauvegardes.

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

Emplacement où sera stockée la clé secrète GPG.

  • mysql_backup_system_user: root

Utilisateur qui possédera et exécutera le script de sauvegarde ainsi que le job cron.

  • mysql_backup_config: []

Personnalisations au script de sauvegarde lui-même (les valeurs utilisent la syntaxe bash).

  • timestamp: "$(date +"%Y-%m-%d_%H%M")" Date et heure utilisées pour créer les répertoires de sauvegarde "YYYY-MM-DD_HHII".
  • backup_dir: "/tmp/mysql-s3-backups/${timestamp}" Chemin du répertoire de sauvegarde local utilisé pour stocker des fichiers avant téléchargement.
  • backup_dir_remove: "true" Supprimer le répertoire de sauvegarde local à la fin du script.
  • aws_bucket: "mysql-s3-backups" Nom par défaut du bucket AWS S3.
  • aws_dir: "$timestamp" Répertoire AWS par défaut pour stocker les sauvegardes.
  • aws_extra_arguments: "--endpoint https://s3-compatable-endpoint.example.com" Arguments supplémentaires à passer à l'AWS CLI.
  • aws_enabled: "true" Activer le téléchargement vers Amazon S3, si faux, le drapeau "backup_dir_remove" sera défini sur faux.
  • aws_profile: "mysql-s3-backup" Définir le profil AWS à utiliser (~/.aws/credentials et ~/.aws/config).
  • mysql_slave: "false" Définir sur vrai si vous sauvegardez depuis un serveur esclave MySQL, cela arrêtera l'esclave et le redémarrera lorsque le script sera terminé.
  • mysql_using_rds: "false" Définir sur vrai si vous sauvegardez depuis une réplica en lecture RDS, cela assurera que nous utilisons les fonctions mysql.rds_stop_replication et mysql.rds_start_replication au lieu des commandes standard STOP / START SLAVE (qui n'ont pas les permissions nécessaires sur RDS).
  • mysql_use_defaults_file: "true" Utiliser le fichier de configuration MySQL par défaut.
  • mysql_defaults_file: "" Spécifier l'emplacement du fichier par défaut, par exemple "/etc/my.cnf".
  • mysql_user: "", mysql_password: "", mysql_host: "" Si mysql_use_defaults_file est faux, il essaiera d'utiliser ces paramètres pour se connecter à MySQL.
  • mysql_exclude: "information_schema|performance_schema|mysql|sys" Liste des bases de données à exclure de l'export, c'est une liste séparée par des pipes (RegEx).
  • mysqldump_args: "--triggers --routines --force --opt --add-drop-database" Drapeaux par défaut utilisés pour le dump de la base de données.
  • gpg_enabled: "false" Si vrai, les sauvegardes seront cryptées avec GPG et le suffixe ".gpg" sera ajouté à chacun des fichiers de sauvegarde.
  • gpg_args: "--encrypt --batch --trust-model always" Drapeaux par défaut utilisés pour le cryptage GPG.
  • gpg_recipient: "" Destinataire des fichiers cryptés par clé publique.
  • gpg_sign: "false" Drapeau pour imposer la signature des sauvegardes.
  • gpg_signer: "" Clé GPG par défaut à utiliser pour signer.

Dépendances

Exemple de Playbook

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

À l'intérieur de 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}"

Licence

MIT / BSD

Informations sur l'auteur

Ce rôle a été créé en 2016 par Memiah Limited.

À propos du projet

MySQL to Amazon S3 backup.

Installer
ansible-galaxy install memiah.mysql-s3-backup
Licence
Unknown
Téléchargements
699
Propriétaire