Vous vous souvenez surement avoir utilisé il y a encore quelques années AutoMySQLBackup sur SourceForge ? Il était rapide à mettre en place pour gérer la sauvegarde mysql. Mais il est en désuétude depuis longtemps, il n’y a plus de support. J’ai décidé de reprendre ce script en hébergeant AutoMySQLBackup sur github.

L’utilisation est presque la même, hormis l’utilisation préférable d’un fichier my.cnf pour ne plus avoir les identifiants MySQL dans la ligne de commande… Le mot de passe est stocké dans un fichier à devoir remplir dans la variable CONFIG_mysql_mycnf_file .

D’autres bugfix ont été réglés pour des arguments actuellement dépréciés –ssl, ainsi que des problèmes lié à un accès refusé pour les tablespaces.

Pour ceux qui ne connaissent pas, AutoMySQLBackup permet un fonctionnement en mode whitelist ou blacklist des bases de données à sauvegarder. Souvent, on va lui dire que tout sauvegarder sauf information_schema, performance_schema, sys. C’est donc une sauvegarde MySQL automatique ! Et toute nouvelle base de données ajoutée sur le serveur mutualisé sera automatiquement sauvegardée ! Il permet de gérer une rétention différente pour les backups journaliers, hebdomadaires ou mensuels.

Installation d’AutoMySQLBackup

Voici les étapes d’installation :

  • Pré-requis de bonne pratique, créer un utilisateur dédié au dump MySQL pour AutoMySQLBackup
CREATE USER 'automysqlbackup'@'localhost' IDENTIFIED BY  '<MOT_DE_PASSE>';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER,USAGE ON *.* TO 'automysqlbackup'@'localhost' ;
  • Copier le répertoire git OU directement le dernière version de l’archive
git clone https://github.com/belgotux/automysqlbackup.git
wget https://github.com/belgotux/automysqlbackup/archive/refs/heads/main.zip && unzip main.zip
  • Installer le script et les fichiers de configuration
sudo bash install.sh
  • Créer le fichier contenant les identifiants de connexion /etc/automysqlbackup/votre-server.cnf
[mysqldump]
user=automysqlbackup
password=""
[mysql]
user=automysqlbackup
password=""
[mysqlshow]
user=automysqlbackup
password=""
  • Créer le fichier de configuration /etc/automysqlbackup/votre-server.conf en vous basant sur le template. Les points importants sont :
CONFIG_mysql_mycnf_file='/etc/automysqlbackup/votre-server.cnf'
CONFIG_mysql_dump_host='localhost'
CONFIG_backup_dir='/backup/db'
CONFIG_db_names=()  # laisser vide pour sauvegarder toutes les bases de données
CONFIG_db_month_names=() # idem
CONFIG_db_exclude=( 'information_schema' 'performance_schema' 'sys' ) # exclus ces bases
CONFIG_table_exclude=('mysql.event') # exclus cette table
CONFIG_do_monthly="01"
CONFIG_do_weekly="6"
CONFIG_rotation_daily=7
CONFIG_rotation_weekly=4
CONFIG_rotation_monthly=180
CONFIG_mysql_no_tablespaces='yes'
CONFIG_mysql_dump_use_separate_dirs='yes'
CONFIG_mysql_dump_compression='gzip'
CONFIG_mysql_dump_latest='yes'
CONFIG_mysql_dump_latest_clean_filenames='no'
CONFIG_mailcontent='quiet'
CONFIG_mail_address='root'
  • Créer le cron /etc/cron.d/automysqlbackup
0 21 * * *       root    /usr/local/bin/automysqlbackup /etc/automysqlbackup/votre-server.conf > /dev/null
  • Tester manuellement une première fois pour vérifier la création des dossiers daily/weekly/monthly
/usr/local/bin/automysqlbackup /etc/automysqlbackup/votre-server.conf

Voilà, vos sauvegardes MySQL sont maintenant automatisées, vous recevez un mail en cas de problème du script!

Si vous utilisez une architecture MySQL master-slave, je vous conseille de le faire sur le slave, afin de ne pas faire durer un lock table sur le master. Une désynchronisation du slave est préférable, voir un slave dédié si vous ne pouvez vous permettre une désynchro de quelques secondes 😉

Summary
AutoMySQLBackup au goût du jour
Article Name
AutoMySQLBackup au goût du jour
Description
AutoMySQLBackup est un script bash très pratique pour sauvegarder ses bases de données MySQL automatiquement. Il permet un fonctionnement en mode whitelist ou blacklist, ce qui est pratique pour sauvegarder automatiquement toute nouvelle base de données ajoutée sur le serveur mutualisé. Il permet de géré une rétention différente pour les backups journaliers, hebdomadaires ou mensuels.
Author