# Backup MariaDB : comment sauvegarder vos données

Les sauvegardes sont indispensables au bon fonctionnement de toute base de données. Une panne, une mise à jour défectueuse ou un incident de sécurité peuvent effacer irrémédiablement des données. Dans ce tutoriel, découvrez comment protéger efficacement les bases de données MariaDB et effectuer une sauvegarde complète de MariaDB.

## Types de sauvegarde MariaDB : logique vs physique

[MariaDB](https://www.ionos.fr/digitalguide/serveur/know-how/mariadb-cest-quoi/) distingue deux types de [sauvegardes](https://www.ionos.fr/digitalguide/serveur/securite/quest-ce-quune-sauvegarde/), aussi appelées *backups* :

- Les **sauvegardes logiques** stockent les données dans un format exécutable SQL. Elles contiennent des instructions telles que `CREATE TABLE` et `INSERT INTO`, qui permettent de restaurer la structure et le contenu de la base de données. Les sauvegardes logiques sont utiles si vous souhaitez transférer des données vers d’autres systèmes, d’autres versions ou même d’autres systèmes de bases de données.
- Les **sauvegardes physiques** copient les fichiers et les répertoires de la base de données directement à partir du système de fichiers. Cette méthode est plus rapide et plus efficace, en particulier pour les grandes quantités de données. Cependant, elle ne fonctionne de manière fiable que si le serveur, les formats de stockage et les versions de MariaDB restent identiques.

Dans de nombreux cas, il est recommandé de combiner les deux méthodes, par exemple en utilisant des sauvegardes logiques pour les données ou tables individuelles et des sauvegardes physiques pour des restaurations complètes et rapides.

## Créer un backup de MariaDB : quelles sont les options disponibles ?

MariaDB propose différents outils pour sauvegarder les données. Selon l’utilisation prévue, la quantité de données et l’environnement système, différentes méthodes peuvent être envisagées.

### `mariadb-dump`

`mariadb-dump` est l’outil de sauvegarde le plus connu de MariaDB. Il crée des sauvegardes logiques et enregistre les données sous forme de **fichier SQL**. Ce fichier peut ensuite être réimporté à l’aide du client MariaDB.

**Avantages :**

- Fonctionne sur tous les systèmes équipés du client MariaDB
- Sauvegarde des tables, d’une ou de toutes les bases de données
- Compatible avec d’autres versions de MariaDB et MySQL

**Inconvénients :**

- Les volumes de données importants allongent la durée de la sauvegarde et de la restauration
- Des pics de charge peuvent survenir pendant la sauvegarde

### `mariadb-backup`

`mariadb-backup` sauvegarde physiquement les données. Cet outil est basé sur **Percona XtraBackup** et a été étendu pour MariaDB. Il prend en charge le chiffrement et la compression.

**Avantages :**

- Rapide et efficace pour les grandes quantités de données
- Effectue des sauvegardes pendant le fonctionnement (sauvegarde à chaud)
- Convient aux systèmes productifs avec des tables [InnoDB](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/quest-ce-que-innodb/)

**Inconvénients :**

- Ne fonctionne qu’avec InnoDB (pas avec MyISAM)
- Configuration et restauration plus complexes

### Autres options

- **mariadb-hotcopy :** ancien outil pour les tables MyISAM (n’est plus maintenu)
- **LVM-Snapshots :** sauvegarde à l’échelle du système au niveau du système de fichiers. Très rapide, mais complexe
- **dbForge Studio :** solution graphique pour les systèmes Windows avec une interface conviviale

## Exemple pratique : effectuer un backup de MariaDB avec `mariadb-dump`

Vous devez avoir accès au serveur de base de données et disposer d’un compte utilisateur avec des droits de sauvegarde (par exemple *root*). Ouvrez un terminal ou une connexion SSH. Assurez-vous que la commande `mariadb-dump` est installée et disponible dans le chemin d’accès.

### Sauvegarder toutes les bases de données

Exécutez la commande suivante :

```bash
mariadb-dump -u root -p --all-databases --result-file=/backups/backup_all.sql
```

**Explication :**

- `-u root` : définit l’utilisateur root.
- `-p` : demande la saisie du mot de passe.
- `--all-databases` : sauvegarde toutes les bases de données existantes.
- `--result-file` : définit le fichier cible pour la sauvegarde.

La sauvegarde contient toutes les bases de données, y compris la gestion des utilisateurs, les *triggers*, les vues et les tables système.

### Sauvegarder une base de données spécifique

La commande `--databases shop_db` sauvegarde uniquement la base de données spécifiée.

```bash
mariadb-dump -u root -p --databases shop_db --result-file=/backups/shop_db.sql
```

Si vous souhaitez éviter l’instruction `CREATE DATABASE` dans le *dump*, utilisez :

```bash
mariadb-dump -u root -p shop_db --result-file=/backups/shop_db.sql
```

Dans ce cas, vous devrez créer vous-même la base de données lors de la restauration.

### Sauvegarder plusieurs bases de données

Ci-dessous, vous trouverez la liste des bases de données qui seront incluses dans la sauvegarde. Un fichier SQL sera généré contenant les instructions pour toutes les bases de données listées.

```bash
mariadb-dump -u root -p --databases db1 db2 db3 --result-file=/backups/multiple.sql
```

### Sauvegarder des tables individuelles

Nous indiquons la base de données et les tables souhaitées directement dans la commande. Cela est utile pour les exportations ciblées, par exemple lors de la migration de tables individuelles.

```bash
mariadb-dump -u root -p db_name table1 table2 --result-file=tables.sql
```

### Options possibles pour `mariadb-dump`

<table>
  <thead>
    <tr>
      <th>Option</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`--no-data`</td>
      <td>Sauvegarde uniquement la structure, pas les données</td>
    </tr>
    <tr>
      <td>`--no-create-info`</td>
      <td>Sauvegarde uniquement les données, sans la structure des tables</td>
    </tr>
    <tr>
      <td>`--routines`</td>
      <td>Sauvegarde les procédures et les fonctions</td>
    </tr>
    <tr>
      <td>`--events`</td>
      <td>Sauvegarde les événements planifiés</td>
    </tr>
    <tr>
      <td>`--single-transaction`</td>
      <td>Sauvegarde sans verrouillage pour les tables InnoDB</td>
    </tr>
    <tr>
      <td>`--quick`</td>
      <td>Réduit les besoins en mémoire pour les grandes tables</td>
    </tr>
  </tbody>
</table>

### MariaDB : automatiser les sauvegardes avec Cron

Automatisez les sauvegardes quotidiennes à l’aide d’un [*Cron job*](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/cron-job/). Ouvrez le tableau Cron :

```bash
crontab -e
```

Ajoutez cette ligne pour créer une sauvegarde tous les jours à 3 heures, par exemple :

```bash
0 3 ** * mariadb-dump -u root -p password --all-databases --result-file=/backups/backup-$(date +\%F).sql
```

Pour des raisons de sécurité, n’enregistrez pas les mots de passe directement dans le tableau Cron. Créez plutôt un fichier de configuration`.my.cnf` dans le répertoire d’accueil :

```bash
[client]
user=root
password=password
```

Définissez les droits d’accès :

```bash
chmod 600 ~/.my.cnf
```

Utilisez ensuite la variante suivante sans mot de passe dans les Cron jobs :

```bash
mariadb-dump --all-databases --result-file=/backups/backup-$(date +\%F).sql
```

Utilisez de préférence `mariadb-dump` pour des sauvegardes flexibles et indépendantes du système et pour de petites quantités de données. Pour les systèmes productifs avec de grandes quantités de données, `mariadb-backup` est recommandé. Effectuez des sauvegardes régulières et vérifiez-les en effectuant des restaurations tests. Seule une sauvegarde vérifiée vous protège de manière fiable contre la perte de données.


This is a markdown version of: [https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/backup-mariadb/](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/backup-mariadb/) for AI/LLM consumption.