Backup incrementiel

This commit is contained in:
emorino 2019-05-06 16:45:51 +02:00
parent 27750feb17
commit 9eb925e497

View file

@ -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 dabord 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 dabord 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.