Analyse de la fonctionnalité de sauvegarde incrémentielle et de fusion dans IvorySQL

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é.

Étiquettes: IvorySQL PostgreSQL sauvegarde pg_basebackup pg_combinebackup

Publié le 21 juillet à 22h24