Sauvegarde MySQL · 4 min read · Dec 13, 2025

Effectuer des sauvegardes à chaud des bases de données MySQL avec Percona XtraBackup sur Ubuntu 16.04

Percona XtraBackup est un utilitaire de sauvegarde open source pour MySQL. Il prend en charge toutes les variantes de MySQL comme Percona Server, MariaDB et (Oracle) MySQL. Percona Xtrabackup effectue une sauvegarde à chaud pour MySQL. Une sauvegarde à chaud signifie créer une sauvegarde d’un serveur MySQL pendant qu’il fonctionne sans temps d’arrêt.

Dans ce tutoriel, je vais vous montrer comment créer une sauvegarde à chaud d’une base de données MySQL avec l’outil open source Percona XtraBackup sur Ubuntu 16.04 (Xenial Xerus). J’utiliserai MariaDB comme serveur de base de données pour effectuer la sauvegarde, mais la même configuration fonctionnera également pour les serveurs MySQL.

Prérequis

  • Serveur Ubuntu 16.04 - (Xenial Xerus)
  • Serveur MySQL ou MariaDB
  • Privilèges root

Étape 1 - Installer Percona XtraBackup

La première étape consiste à installer le dernier logiciel Percona XtraBackup sur notre serveur Ubuntu. Connectez-vous à votre serveur par SSH (ou sur la console) :

ssh [email protected]  
ENTREZ VOTRE MOT DE PASSE

Percona XtraBackup est disponible dans le dépôt Ubuntu, mais nous voulons utiliser la dernière version du dépôt Percona.

Ajoutez le dépôt Percona en téléchargeant le paquet deb depuis le web et installez-le avec la commande dpkg :

wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb  
sudo dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.deb

Ensuite, mettez à jour le dépôt et installez Percona XtraBackup 2.4 (la dernière version à ce moment) :

sudo apt-get update  
sudo apt-get install percona-xtrabackup-24

Percona XtraBackup est installé.

Étape 2 - Configurer l’utilisateur et le répertoire de sauvegarde

Pour effectuer la sauvegarde à chaud, nous devons créer un nouvel utilisateur mysql avec des privilèges et des permissions spéciaux. Dans ce tutoriel, j’utiliserai MariaDB 10.0 comme serveur de base de données. Si vous n’avez pas encore installé de base de données compatible MySQL, vous pouvez l’installer avec la commande ci-dessous :

sudo apt-get install mariadb-server mariadb-client

Définissez un mot de passe sécurisé pour l’utilisateur root avec cette commande :

mysql_secure_installation

Si MariaDB est installé, accédez au shell MariaDB/MySQL en tant qu’utilisateur root avec la commande client mysql :

mysql -u root -p  
ENTREZ LE MOT DE PASSE MySQL

Créez un nouvel utilisateur appelé ‘ bekupuser ‘ avec le mot de passe ‘ mypassword ‘ (choisissez un mot de passe sécurisé pour votre serveur !) :

CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';

Accordez à l’utilisateur les privilèges suivants : ‘RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT’.

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';  
FLUSH PRIVILEGES;  
exit

Ensuite, créez un nouveau répertoire pour stocker les fichiers de sauvegarde MySQL :

mkdir -p /data/backups/mysql/

Le nouvel utilisateur de sauvegarde et un répertoire de sauvegarde ont été créés.

Étape 3 - Effectuer la sauvegarde avec Innobackupex

Innobackupex est un script Perl qui enveloppe le programme xtrabackup. C’est une version corrigée du script innobackup fourni par Oracle, distribué avec l’outil InnoDB Backup. Innobackupex fournit une sauvegarde pour une instance de base de données MySQL entière, utilisant xtrabackup en combinaison avec xbstream et xbcrypt.

Dans cette étape, nous allons créer et préparer une sauvegarde complète pour l’instance MySQL.

A. Créer une sauvegarde avec Innobackupex

Dans l’étape 2, nous avons créé un nouveau répertoire pour la sauvegarde et ajouté un nouvel utilisateur de sauvegarde mysql. Nous allons les utiliser maintenant pour créer une sauvegarde avec la commande innobackupex.

Créez une sauvegarde MySQL avec innobackupex dans le nouveau répertoire ‘/data/backups/my_backup’ :

innobackupex --user=bekupuser  --password=mypassword --no-timestamp /data/backups/my_backup

Remarque :

–user = utilisateur avec les privilèges de sauvegarde requis (étape 2).

–password = mot de passe de l’utilisateur de sauvegarde.

–no-timestamp = désactiver la création d’un nouveau sous-répertoire horodaté dans le répertoire racine de la sauvegarde.

/data/backups/my_backup = répertoire pour la sauvegarde, il sera créé automatiquement pendant le processus de sauvegarde. Si le répertoire existe, vous recevrez un message d’erreur.

Créer une sauvegarde avec Percona XtraBackup

Une autre option :

mkdir -p /data/backups/my_backup2  
  
innobackupex --user=bekupuser --password=mypassword /data/backups/my_backup2  
  
or  
  
innobackupex --user=bekupuser --password=mypassword /data/backups/

Remarque :

S’il n’y a pas de répertoire ‘ my_backup2 ‘, vous obtiendrez votre répertoire basé sur le format ‘ timestamp ‘.

Résultats :

B. Préparer une sauvegarde complète avec Innobackupex

Après avoir créé une nouvelle sauvegarde, les données ne sont pas prêtes à être restaurées. Il y a une étape de plus pour que les données soient prêtes à être restaurées. Nous avons besoin de l’étape de ‘préparation’ pour que les données puissent être restaurées.

Préparez la sauvegarde en utilisant innobackupex avec l’option –apply-log dans le répertoire de sauvegarde ‘/data/backups/my_backup ‘ :

innobackupex --apply-log /data/backups/my_backup

Assurez-vous que le processus est complet sans erreur avant de continuer.

Préparer la sauvegarde complète

Si vous avez suffisamment de mémoire et une grande base de données, vous pouvez utiliser l’option –use-memory=memorynumber pour indiquer à innobackupex combien de mémoire il peut utiliser :

innobackupex --apply-log --use-memory=4G /data/backups/my_backup

Les données sont maintenant prêtes à être restaurées. Nous pouvons les restaurer sur le même serveur ou sur un autre serveur exécutant MariaDB.

Étape 4 - Restaurer la sauvegarde complète avec Innobackupex

Dans cette étape, nous allons restaurer l’instance MySQL avec innobackupex.

Avant de restaurer l’instance MySQL, nous devons arrêter le processus MySQL avec la commande systemctl (le processus MariaDB est nommé mysql) :

systemctl stop mysql

Faites une sauvegarde de l’ancien répertoire de données MySQL :

mkdir ~/mysql_old/  
mv /var/lib/mysql/* ~/mysql_old/

Ensuite, restaurez l’instance mysql à partir de la sauvegarde complète avec innobackupex :

innobackupex --copy-back /data/backups/my_backup

Lorsque vous voyez le résultat ‘ innobackupex : terminé OK ‘, alors vous avez restauré avec succès votre instance MySQL.

Maintenant, changez le propriétaire du répertoire de données MySQL en l’utilisateur mysql et redémarrez le service :

chown -R mysql:mysql /var/lib/mysql  
systemctl start mysql

restaurer la sauvegarde

L’instance MySQL a été restaurée avec succès avec percona-xtrabackup.

Référence

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.