Aller au contenu principal

Sauvegarde MySQL / MariaDB

Job qui sauvegarde la base avant chaque déploiement, sans drush : il convient à tout projet, Symfony par exemple. Pour un projet Drupal, voir aussi le backup Drupal.

Fonctionnement​

  • Commande : nice -n 10 mysqldump --single-transaction --quick --routines --triggers --no-tablespaces <base> | gzip. mysqldump lit les identifiants dans le ~/.my.cnf du compte SSH (section [client], utilisateur et mot de passe).
  • Nom du dump : <DB_PATH>/<date>-<PROJECT_URL>-<environnement>.sql.gz. Le dossier est créé au besoin.
  • Contrôle : le dump est écrit dans un fichier temporaire et n'est gardé que s'il est complet (dernière ligne -- Dump completed). Un mysqldump en échec ou interrompu fait échouer le job, sans rien toucher aux dumps existants. Ce contrôle suppose que le ~/.my.cnf n'active pas skip-comments ni compact.
  • Place disque : avant le dump, le job vérifie qu'il reste au moins deux fois la taille du dernier dump.
  • Rétention : seuls les MYSQL_BACKUP_KEEP derniers dumps datés de l'environnement sont conservés. Les autres fichiers du dossier ne sont pas touchés.

Utilisation​

include:
- project: kgaut/gitlab-ci-templates
ref: *CI_TEMPLATE_VERSION
file:
- '/templates/generic/stages-variables-extends.yml'
- '/templates/generic/mysql-backup.yml'

Variables​

Nom de la variableContenuExempleRemarque
MYSQL_BACKUP_DATABASENom de la base à sauvegardermonsite_ppà définir dans les variables CI, par environnement
MYSQL_BACKUP_KEEPNombre de dumps conservés par environnement2par défaut 3
DB_PATHDossier des dumps, relatif à la racine du projet ou absolufiles/dumps
PROJECT_URLUtilisé dans le nom du dumpmonsite.compar défaut, le nom de la base
PROJECT_ROOTChemin relatif ou absolu vers la racine du projet~/http
DISABLE_PROD_DUMP_ON_DEPLOYDésactiver la sauvegarde en prod1par défaut 0
DISABLE_PREPROD_DUMP_ON_DEPLOYDésactiver la sauvegarde en preprod1par défaut 0

Liste des jobs​

prod:mysql-backup​

Sauvegarde la base de production avant le déploiement d'un tag

preprod:mysql-backup​

Sauvegarde la base de préproduction avant le déploiement de la branche PREPROD_BRANCH