Vous n'êtes pas identifié(e).
Depuis juin et avec l'autorisation des Éditions Diamond, Guillaume Lelarge reprend sa série d'articles destinée aux DBA débutant avec PostgreSQL, initialement publiée dans Linux Pratique.
Voici le 3e article : Linux Pratique - Sauvegardes d’une instance PostgreSQL .
Hors ligne
Dommage que cet article ne mentionne pas que le fait d'utiliser un outil comme pgbackrest ne sait restaurer que toutes les bases de l'instance.
Dans l'exemple mentionné pgbackrest va restaurer les 3 bases applicatives b1, b2 et b3 ainsi que les bases "système" postgresql, template0 et template1 alors qu'idéalement on ne voudrait que restaurer la base b2.
Ceci n'est ni une limitation de pgbackrest (ni de barman d'ailleurs - même s'il n'est pas ici utilisé -) mais une limitation de PostgreSQL qui ne prend ni en compte la sauvegarde physique d'une base individuelle ni la restauration physique d'une base individuelle.
Cet article pourrait être complété en montrant :
- comment restaurer l'instance source dans une instance temporaire avec pgbackrest
- et ensuite comment utiliser pg_dump/pg_restore pour uniquement restaurer la base b2 de l'instance temporaire vers l'instance source.
Dernière modification par pifor (16/09/2024 22:32:43)
Pierre
Hors ligne
Bonjour Pierre,
Votre commentaire est transmis à l'auteur de l'article, merci pour votre intérêt.
Bonne journée,
Laura
Hors ligne
Bonjour Pifor,
détrompez-vous, pgbackrest est en capacité de ne restaurer que certaines bases d'une instance :
Exclude Database Option (--db-exclude)
Restore excluding the specified databases.
Databases excluded will be restored as sparse, zeroed files to save space but still allow PostgreSQL to perform recovery. After recovery, those databases will not be accessible but can be removed with the drop database command. The --db-exclude option can be passed multiple times to specify more than one database to exclude.
https://pgbackrest.org/configuration.ht … db-exclude
bonne journée à vous
Cordialement,
Sébastien.
Hors ligne
Bonjour Sébastien,
En effet pgbackrest ne peut restaurer qu'une seule base mais en écrasant les autres bases qui sont de fait inutilisables.
Cela ne permet donc pas de restaurer une seule base sans impact sur les autres bases. Est-ce qu'il y a un logiciel qui sait faire ça ?
Dernière modification par pifor (17/09/2024 12:00:29)
Pierre
Hors ligne
Bonjour pifor,
a ma connaissance, il n'existe pas d'outil qui permette de restaurer une seule base "in place" dans une instance donnée.
l'unité de restauration est l'instance par défaut.
Pour moi, la seule solution est pg_dump/pg_restore qui permet de restaurer logiquement une base.
Si vous voulez faire une restauration PITR d'une seule base parmi plusieurs, il faut restaurer la base (vi --db-exclude) ou l'instance a un autre endroit et faire pg_dump/pg_restore ensuite.
Hors ligne
Si l'article ne mentionne pas le fait que pgbackrest sauvegarde l'instance complète, c'est que c'est justement une limitation de PostgreSQL et pas une limitation de pgbackrest. Même si pgbackrest sait restaurer une seule base, cette "fonctionnalité" est pour moi un contournement pas très propre.
Guillaume.
Hors ligne