Percona XtraBackup est un utilitaire pour la sauvegarde à chaud des bases de données MySQL.
Lors de la création d'une sauvegarde, il n'y a pas de verrouillage des tables, votre système continue de fonctionner sans aucune restriction.
XtraBackup 2.4 peut réaliser des sauvegardes de tables InnoDB, XtraDB et MyISAM sur des serveurs MySQL 5.11, 5.5, 5.6 et 5.7, ainsi que sur le serveur Percona pour MySQL avec XtraDB.
Pour travailler avec MySQL 8.x il convient d'utiliser la version XtraBackup 8.x. Cet article traitera uniquement de XtraBackup 2.4.
Le principal avantage XtraBackup est que cet utilitaire convient à la fois pour les sauvegardes de systèmes très chargés serveurs, ainsi que pour les systèmes avec peu de transactions.
Si la taille totale de vos bases de données MySQL est significative (dizaines de gigaoctets), alors l'utilitaire standard mysqldump ne permettra pas de créer rapidement une sauvegarde, et la restauration du dump prendra beaucoup de temps.
Installation
Installation XtraBackup depuis le dépôt apt Percona.
Exécutez les commandes suivantes dans l'ordre :
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-242. Après l'installation, exécutez la commande xtrabackup -v. Il est important de s'assurer que l'utilitaire fonctionne correctement sur le serveur. Le résultat affichera quelque chose comme :
xtrabackup : arguments du serveur reconnus : — datadir=/var/lib/mysql — tmpdir=/tmp — server-id=1 — logbin=/var/log/mysql/mysql-bin.log — innodbbufferpoolsize=16384M — innodbfilepertable=1 — innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup version 2.4.20 basé sur le serveur MySQL 5.7.26 Linux (x8664) (révision id : c8b4056)

Les autorisations, permissions et privilèges
XtraBackup doit être en mesure de :
Se connecter à votre serveur MySQL.
Avoir des droits d'accès au répertoire datadir.
Lors de la création de la sauvegarde, avoir les droits d'écriture dans le répertoire spécifié par le paramètre target-dir répertoire.
Qu'est-ce que datadir ?
datadir c'est le répertoire où le serveur de base de données MySQL stocke les données. Toutes les bases de données, toutes les tables s'y trouvent. Dans la plupart des distributions Linux, ce répertoire par défaut est /var/lib/mysql.
Qu'est-ce que le répertoire target-dir ?
target-dir c'est le répertoire dans lequel la sauvegarde sera enregistrée.
L'utilisateur de la base de données a besoin des droits d'accès suivants aux tables et bases de données à sauvegarder :
RELOAD et LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
CREATE
INSERT
SELECT
Configuration
Configuration XtraBackup s’effectue à l'aide d'options qui se comportent de la même manière que les paramètres standards de MySQL.
Qu'est-ce que cela signifie ?
Les paramètres de configuration peuvent être spécifiés soit dans la ligne de commande, soit dans le fichier de configuration de la SGBD, par exemple dans /etc/my.cnf.
L'outil XtraBackup lit les sections après son lancement [mysqld] et [xtrabackup] à partir des fichiers de configuration de MySQL. Cela permet à l'outil d'utiliser les réglages de votre SGBD sans avoir à spécifier les paramètres manuellement à chaque sauvegarde.
Par exemple, la valeur datadir et certains paramètres InnoDB XtraBackup peuvent être obtenus à partir de la configuration de votre SGBD.
Si vous souhaitez remplacer certains paramètres de XtraBackup qui se trouvent dans la section [mysqld], indiquez-les simplement dans le fichier de configuration dans la section [xtrabackup]. Comme ils seront lus plus tard, leur priorité sera plus élevée.
Vous n'avez pas à ajouter de paramètres dans my.cnf. Tous les paramètres requis peuvent être spécifiés dans la ligne de commande. En général, la seule chose qui peut être utile à placer dans la section [xtrabackup] de votre my.cnf — est le paramètre target_dir, qui définit par défaut le répertoire où les sauvegardes seront placées. Mais ce n'est pas obligatoire.
Exemple d'indication du chemin vers le répertoire de sauvegarde dans my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Script de création de sauvegarde
Pour créer une sauvegarde, vous pouvez utiliser le script suivant :
#!/bin/bash
# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup
# Cоздаём бекап
xtrabackup --user=xtrabackup
--password=xxxx_SECRET_xxxx
--backup
--target-dir=/mysql/backup
# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup
# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backupQue se passe-t-il pendant l'exécution du script ?
Tout d'abord, nous nettoyons (supprimons) le répertoire où nous allons stocker la sauvegarde :
rm -rf /mysql/backup.
Ensuite, à l'aide de l'outil XtraBackup nous créons une sauvegarde et la sauvegardons dans /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupAu préalable, nous avons créé un utilisateur dans MySQL xtrabackup avec les privilèges nécessaires. À l'aide du paramètre target-dir nous spécifions le répertoire dans lequel la sauvegarde doit être enregistrée.
Point important !
Notez la ligne du script :
xtrabackup --prepare --target-dir=/mysql/backup
Les données dans le répertoire /mysql/backup ne sont pas cohérentes tant qu'elles n'ont pas été préparées.
En effet, des modifications ont pu se produire pendant la copie des fichiers. L'opération xtrabackup --prepare --target-dir=/mysql/backup rend les données de la sauvegarde parfaitement synchrones dans le temps.
L'opération de préparation des données peut être effectuée sur n'importe quelle machine. Il n'est pas nécessaire de le faire sur le serveur où se trouve la SGBD d'origine. Vous pouvez copier la sauvegarde sur le serveur de destination et la préparer là-bas.
La dernière étape consiste à créer une archive contenant notre sauvegarde :
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date +%F-%H-%M-%S)».gz /mysql/backupRestauration de la sauvegarde
Avant de commencer la restauration de la sauvegarde sur le serveur cible, les données doivent passer par une étape de préparation. Comment faire cela est expliqué ci-dessus.
Le processus de restauration des données est très simple. Vous devez extraire la sauvegarde de l'archive et remplacer les données dans datadir.
Comment remplacer les données dans datadir ?
Considérons deux options.
Option 1
Utiliser l'outil XtraBackup. Il faut spécifier l'option --copy-back.
La commande ci-dessous transférera la sauvegarde dans datadir le serveur cible :
xtrabackup --copy-back --target-dir=/mysql/backupOption 2
On peut procéder autrement, sans utiliser l'outil XtraBackup.
Tout ce que vous devez faire est de copier la sauvegarde dans datadir. Vous pouvez le faire en utilisant cp ou rsync.
Il est important de comprendre que la procédure de restauration de la sauvegarde consiste simplement à remplacer le contenu du répertoire datadir.
Avant de commencer la restauration de la sauvegarde sur le serveur cible, il est nécessaire de :
Arrêter le serveur MySQL.
Vider le dossier datadir ou transférer son contenu ailleurs. Le répertoire datadir doit impérativement être vide.
Une fois le transfert des données terminé, le datadir serveur MySQL peut être démarré.
Matériaux utilisés
.
Source : habr.com
