Introduction générale
La version 4 d'IvorySQL intègre des mécanismes de sauvegarde incrémentielle au niveau des blocs ainsi qu'une fonction de fusion des sauvegardes incrémentielles. Ces fonctionnalités améliorent significativement l'efficacité des processus de sauvegadre et de restauration. L'outil pg_basebackup permet désormais les sauvegardes incrémentielles, réduisant ainsi l'espace de stockage nécessaire et le temps d'exécution. Parallèlement, l'utilitaire pg_combinebackup offre la capacité de fusionner plusieurs sauvegardes incrémentielles en une seule sauvegarde complète, optimisant la flexibilité et la rapidité de la restauration des données.
Fonctionnalités techniques
Le système de sauvegarde incrémentielle d'IvorySQL fonctionne en identifiant les blocs de données modifiés depuis le dernier point de vérification (checkpoint). Cette approche ciblée réduit à la fois le volume de données à sauvegarder et les opérations d'E/S nécessaires. De plus, la fusion via pg_combinebackup élimine la nécessité d'appliquer séquentiellement chaque sauvegarde incrémentielle lors de la restauration, simplifiant ainsi le processus de récupération.
Activation de la sauvegarde incrémentielle
Pour activer cette fonctionnalité, il faut configurer les paramètres du serveur et recharger la configuration :
ALTER SYSTEM SET enable_incremental_backup = TRUE;
SELECT pg_reload_conf();
Ensuite, créons une table de test et insérons des données initiales :
CREATE TABLE test_inventory(item_id SERIAL PRIMARY KEY, quantity INT);
INSERT INTO test_inventory(quantity) VALUES (150);
SELECT * FROM test_inventory;
Sauvegarde complète initiale
Exécutons une sauvegarde complète avec l'outil pg_basebackup, incluant le fichier manifest nécessaire pour les sauvegardes incrémentielles futures :
pg_basebackup -Fp -D /backup_$(date +%Y%m%d%H%M%S)_complete
Création de sauvegardes incrémentielles
Première sauvegarde incrémentielle :
Modifions les données et effectuons la première sauvegarde incrémentielle :
UPDATE test_inventory SET quantity = 200 WHERE item_id = 1;
pg_basebackup -Fp -D /backup_$(date +%Y%m%d%H%M%S)_incr1 -i /backup_20250220161530_complete/backup_manifest
Seconde sauvegarde incrémentielle :
Effectuons une nouvelle modification suivie d'une deuxième sauvegarde incrémentielle :
UPDATE test_inventory SET quantity = 75 WHERE item_id = 1;
pg_basebackup -Fp -D /backup_$(date +%Y%m%d%H%M%S)_incr2 -i /backup_20250220161808_incr1/backup_manifest
Fusion des sauvegardes
Fusionnons la sauvegarde complète avec les sauvegardes incrémentielles pour obtenir une nouvelle sauvegarde complète consolidée :
cd /backup
pg_combinebackup backup_20250220161530_complete backup_20250220161808_incr1 backup_20250220162115_incr2 -o backup_consolidated_final
Remarque importante : La sauvegarde complète doit être spécifiée en premier dans la commande, suivie des sauvegardes incrémentielles dans l'ordre chronologique pour garantir l'intégrité des données.
Restauration à partir d'une fusion complète
Lançons le serveur à partir de la sauvegarde fusionnée et vérifions l'intégrité des données :
pg_ctl start -D /backup/backup_consolidated_final -o '-p 5439'
SELECT * FROM test_inventory;
Fusion partielle pour restauration à un point intermédiaire
Pour restaurer à un état spécifique, fusionnons jusqu'à une sauvegarde incrémentielle intermédiaire :
pg_combinebackup backup_20250220161530_complete backup_20250220161808_incr1 -o backup_point_intermediaire
pg_ctl start -D /backup/backup_point_intermediaire -o '-p 5440'
SELECT * FROM test_inventory;
Considérations opérationnelles
- Ordre des sauvegardes : Respectez strictement l'ordre chronologique lors de la fusion pour éviter toute incohérence dans la chaîne de sauvegarde.
- Gestion de la rétention : La suppression d'une sauvegarde incrémentielle intermédiaire rompt la chaîne et compromet la restauration des sauvegardes ultérieures. Procédez à des fusions régulières pour simplifier la gestion.
- Impact sur les performances : Surveillez la charge système pendant les opérations de sauvegarde et de fusion, particulièrement pendant les périodes de forte activité.