Publié le: 2017-10-25

Ansible mysqldump

Ansible est un excellent orchestrateur d’infrastructure agent-less. Nous n’avions pas encore eu le temps de le couvrir sur ce blog, malgré que je l’utilise beaucoup au quotidien pour orchestrer, mettre en production, maintenir une infrastructure de quelques centaines de serveurs.

Ansible est capable de faire des dumps et restaurations de fichiers SQL de façon très simple et, depuis la version 2.0, ceux-ci peuvent être compressés.

Injecter un dump SQL compressé

hosts: mysql_server_01
tasks:
  - mysql_db: name="translations" state=import target="/nfs/backup/translations.sql.gz"

Ansible va ici se connecter sur le serveur mysql_server_01 renseigné dans votre fichier hosts et injecter le fichier translations.sql.gz directement dans la base translations. Si elle n’existe pas il la créera. Si vous utilisez ansible 1.X, vous ne pouvez spécifier qu’un fichier non compressé, il faudra une étape unarchive intermédiaire.

Dumper une base de données en SQL

hosts: mysql_server_01
tasks:
  - mysql_db: name="translations" state=dump target="/nfs/backup/translations.sql.gz"

Ansible exporte ici notre base translations vers le fichier translations.sql.gz

Si vous le souhaitez vous pouvez également utiliser les paramètres login_host, login_password, login_port et login_host afin de configurer votre connexion MySQL. Dans le cas contraire le fichier $HOME/.my.cnf sera lu.

Backup multi bases

Voici en extra de cet article, un cas d’usage qui permet de faire un backup multi bases en utilisant une boucle ansible

hosts: mysql_server_01
tasks:
  - mysql_db: name="{{ item }}" state=export target="/nfs/backup/{{ item }}.sql.gz"
    with_items:
      - translations
      - movies
      - mysql
      - owncloud