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.cnfdu 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). Unmysqldumpen échec ou interrompu fait échouer le job, sans rien toucher aux dumps existants. Ce contrôle suppose que le~/.my.cnfn'active passkip-commentsnicompact. - 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_KEEPderniers 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 variable | Contenu | Exemple | Remarque |
|---|---|---|---|
| MYSQL_BACKUP_DATABASE | Nom de la base à sauvegarder | monsite_pp | à définir dans les variables CI, par environnement |
| MYSQL_BACKUP_KEEP | Nombre de dumps conservés par environnement | 2 | par défaut 3 |
| DB_PATH | Dossier des dumps, relatif à la racine du projet ou absolu | files/dumps | |
| PROJECT_URL | Utilisé dans le nom du dump | monsite.com | par défaut, le nom de la base |
| PROJECT_ROOT | Chemin relatif ou absolu vers la racine du projet | ~/http | |
| DISABLE_PROD_DUMP_ON_DEPLOY | Désactiver la sauvegarde en prod | 1 | par défaut 0 |
| DISABLE_PREPROD_DUMP_ON_DEPLOY | Désactiver la sauvegarde en preprod | 1 | par 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