From 9eb925e497143b1bf58a2ff1e250645993259a60 Mon Sep 17 00:00:00 2001 From: emorino Date: Mon, 6 May 2019 16:45:51 +0200 Subject: [PATCH] Backup incrementiel --- HowtoMySQL/mariabackup.md | 98 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/HowtoMySQL/mariabackup.md b/HowtoMySQL/mariabackup.md index 6dc07060..7a5cd33e 100644 --- a/HowtoMySQL/mariabackup.md +++ b/HowtoMySQL/mariabackup.md @@ -107,3 +107,101 @@ Cependant, il écrit les fichiers sur le disque en tant qu'utilisateur et groupe En tant que tel, après la restauration d'une sauvegarde, vous devrez peut-être ajuster le propriétaire du répertoire de données pour qu'il corresponde à l'utilisateur et au groupe du serveur MariaDB, généralement mysql pour les deux. +## Sauvegarde incrémentielle avec Mariabackup + +Lorsque vous utilisez Mariabackup, vous avez la possibilité d'effectuer une sauvegarde complète ou incrémentielle. +Les sauvegardes complètes créent une copie complète dans un répertoire vide tandis que les sauvegardes incrémentielles mettent à jour une sauvegarde précédente avec de nouvelles données. + +Les pages InnoDB contiennent des numéros de séquence de journal, ou LSN. Chaque fois que vous modifiez une ligne sur une table InnoDB de la base de données, le moteur de stockage incrémente ce nombre. + +Lors de l'exécution d'une sauvegarde incrémentielle, Mariabackup vérifie la sauvegarde la plus récente du LSN par rapport aux LSN contenus dans la base de données. +Il met ensuite à jour tous les fichiers de sauvegarde en retard. + +### Mise en place de la sauvegarde incrémentielle + +Pour effectuer une sauvegarde incrémentielle, vous devez d’abord effectuer une sauvegarde complète, comme vu précédemment : + +~~~ +# mariabackup --backup --target-dir=/home/mariabackup/ +~~~ + +Ceci sauvegarde toutes les bases de données dans le répertoire cible /home/mariabackup/ +Si vous regardez dans ce répertoire dans le fichier _xtrabackup_checkpoints_, vous pouvez voir les données de LSN fournies par InnoDB : + +~~~ +# cat /home/mariabackup/xtrabackup_checkpoints + +backup_type = full-prepared +from_lsn = 0 +to_lsn = 6902092065 +last_lsn = 6902092065 +recover_binlog_info = 0 +~~~ + +Une fois que vous avez créé une sauvegarde complète sur votre système, vous pouvez également sauvegarder les modifications incrémentielles aussi souvent que vous le souhaitez. + +Pour effectuer une sauvegarde incrémentielle, vous devez exécuter Mariabackup avec l'option _--backup_ pour lui indiquer d'effectuer une sauvegarde et avec l'option _--target-dir_ pour lui indiquer où placer les modifications incrémentielles. + +Le répertoire cible doit être vide. Vous devez également l'exécuter avec l'option _--incremental-basedir_ pour lui indiquer le chemin d'accès à la sauvegarde complète effectuée ci-dessus : + +~~~ +mariabackup --backup --target-dir=/home/mariabackup/inc1/ --incremental-basedir=/home/mariabackup/ +~~~ + +Cette commande crée une série de fichiers delta qui stockent les modifications incrémentielles dans _/home/mariabackup/inc1/_ +Vous pouvez trouver un fichier _xtrabackup_checkpoints_ similaire dans ce répertoire, avec les valeurs LSN mises à jour : + +~~~ +# cat /home/mariabackup/inc1/xtrabackup_checkpoints + +backup_type = incremental +from_lsn = 6902092065 +to_lsn = 6909766286 +last_lsn = 6909766286 +recover_binlog_info = 0 +~~~ + +Pour effectuer des sauvegardes incrémentielles supplémentaires, vous pouvez ensuite utiliser le répertoire de base incrémentiel de la sauvegarde incrémentielle précédente comme répertoire cible pour la prochaine sauvegarde incrémentielle : + +~~~ +# mariabackup --backup --target-dir=/home/mariabackup/inc2/ --incremental-basedir=/home/mariabackup/inc1/ +~~~ + +### Restauration d'un sauvegarde incrémentielle + +En suivant les étapes ci-dessus, vous avez trois sauvegardes dans /home/mariabackup/ : la première est une sauvegarde complète, les autres sont incrémentées sur cette première sauvegarde. + +Pour restaurer une sauvegarde dans la base de données, vous devez d’abord appliquer les sauvegardes incrémentielles à la sauvegarde complète de base. +Ceci est fait en utilisant l'option de commande _--prepare_ avec l'option _--apply-log-only_. + +Premièrement, nous préparons le backup de base : + +~~~ +# mariabackup --prepare --apply-log-only --target-dir=/home/mariabackup/ +~~~ + +Ensuite, appliquez les modifications incrémentielles à la sauvegarde complète de base : + +~~~ +# mariabackup --prepare --apply-log-only --target-dir=/home/mariabackup/ --incremental-dir=/home/mariabackup/inc1/ +~~~ + +L'exécution de cette commande met la sauvegarde complète de base, c'est-à-dire _/home/mariabackup/_, en synchronisation avec les modifications contenues dans la première sauvegarde incrémentielle. +Répétez l'étape ci-dessus pour appliquer les modifications de la sauvegarde _/home/mariabackup/inc2/_ à la base : + +~~~ +# mariabackup --prepare --apply-log-only --target-dir=/home/mariabackup/ --incremental-dir=/home/mariabackup/inc2/ +~~~ + +### Restauration du backup incrémentiel + +Nous pouvons désormais restaurer le backup de la même manière que cité plus haut : + +* Arrêtez le processus MariaDB Server, assurez-vous que le datadir soit vide, lancez Mariabackup comme ceci : + +~~~ +# mariabackup --copy-back --target-dir=/home/mariabackup/ +~~~ + +Assurez-vous que les droit de _/var/lib/mysql/ soit correct. +