Vous êtes sur la page 1sur 13

Atelier-2 : Sauvegarde et restauration

1. pg_dump
pg_dump est un outil qui permet de créer une copie d’une bases de données sur le
serveur. Considérez-le comme ‘vider les fichiers objets d’une seule base de données
dans un nouveau fichier. À la fin de ce processus, un nouveau fichier est créé qui est
interprétable par l’homme (rempli de commandes SQL).Les sauvegardes réalisées sont
cohérentes. pg_dump ne bloque pas l'accès des autres utilisateurs (ni en lecture ni en
écriture).

pg_dump sauvegarde seulement les éléments d’une base de données. C’est-à-dire, le


fichier exporté après la sauvegarde est littéralement un fichier rempli de commandes
DDL (Langage de définition de données) et DML ( Langage de manipulation des
données ). Pour sauvegarder les objets globaux communs à toutes les bases de données
d'une même instance, tels que les rôles et les tablespaces, utilisez pg_dumpall. Nous
allons détailler pg_dumpall après.

Les options suivantes, en ligne de commande, contrôlent le contenu et le format


de la sortie.

-h : « hostname» Précise le nom d'hôte de la machine sur laquelle le serveur de bases


de données est en cours d'exécution .
- b : database
- p : port
- U : user
- f : fichier de sortie
- F : précision du format de sortie
- c : custm (binaire)
- d : directory
- t : tar
- p : plain texte
--data-only :Seules les données sont sauvegardées, pas le schéma (définition des
données).
--roles-only : Sauvegarde seulement les rôles, pas les bases ni les tablespaces.
--schema-only :Seules les définitions des objets (schéma), sans les données, sont
sauvegardées.
NB : la liste des options n’est pas exhaustive, on peut utiliser plusieurs option cela
dépend juste de notre besoin .

Après avoir créer la base de données ipcomdb, on a crée une table client et nous avons
inséré des données dans la table client.
Nous allons sauvegarder notre base de données PostgreSQL (ipcomdb) dans un script ou
tout autre fichier d'archive .

postgres@server-ipcom:~$ pg_dump ipcomdb > ipcomdb_backup.sql


Après avoir fait la sauvegarde , nous allons visualiser le fichier ipcomdb_backup.sql.

postgres@server-ipcom:~$ less ipcomdb_backup.sql


Par

exemple , si on veut faire la sauvegarde sur une machine distante alors, on doit juste
préciser le nom de la machine (host) et le port :

# pg_dump -h host -p port ipcomdb > mydb_backup


Nous allons convertir notre fichier ipcomdb_backup.sql en fichier binaire
postgres@server-ipcom:~$ pg_dump -f ipcomdb_backup.sql -C -Fc -d ipcomdb

Nous allons archiver notre base de données ipcomdb dans un fichier tar :
postgres@server-ipcom:~$ pg_dump -Ft -b ipcomdb > ipcomdb1.tar
postgres@server-ipcom:~$ less ipcomdb1.tar
Pour sauvegarder une base de données dans une archive au format répertoire :
postgres@server-ipcom:~$ pg_dump -Fd ipcomdb -f rep_ipcomdb

-Fd ipcomdb -f rep_ipcomdb Après avoir archive notre base de donnés dans un format
répertoire, nous allons visualiser le contenu de notre répertoire, on remarque qu’on a
deux fichiers 2172 .dat.gz et toc.dat

On tape « y » pour pouvoir visualiser le fichier toc.dat ,nous avons exactement les
même informations de la base de données ipcomdb.

2. pg_dumpall
pg_dumpall est un outil d'extraction (« sauvegarde ») de toutes les bases de données
PostgreSQL d'une grappe vers un fichier script. Celui-ci contient les commandes SQL
utilisables pour restaurer les bases de données avec psql. Cela est obtenu en appelant
pg_dump pour chaque base de données de la grappe. pg_dumpall sauvegarde aussi les
objets globaux, communs à toutes les bases de données. (pg_dump ne sauvegarde pas
ces objets.) Cela inclut aussi les informations concernant les utilisateurs et les groupes
des bases de données, ainsi que les tablespaces et les propriétés telles que les droits
d'accès s'y appliquant.
- Pg_dumpall permet de faire le backup intégrale de l’instance, en incluant aussi les
utilisateurs, par contre cette fonctionnalité qui prend en compte les utilisateurs et
d’autres éléments ne se trouvent pas sur pg_dump .
Les options suivantes, en ligne de commande, contrôlent le contenu et le format
de la sortie.

-h : « hostname» Précise le nom d'hôte de la machine sur laquelle le serveur de bases


de données est en cours d'exécution .
- l database
- p : port
- U : utilisateur
- f : le nom du fichier

p : port
--data-only : Uniquement les data.
--roles-only : Sauvegarde seulement les rôles.
--schema-only : Seulement la structure (Shema)
NB : la liste des options n’est pas exhaustive, on peut utiliser plusieurs options cela
dépend juste de notre besoin.
Nous allons Sauvegarder notre base de données ipcomdb dans un script SQL,
ipcomdb_dumpall.sql.

Après avoir fait la sauvegarde , nous allons visualiser le fichier ipcomdb_backup.sql.

L’outil pg_dumpall nous permet de voir les informations globale de la base données, on
peut bel et bien voir dans le fichiers ipcomdb_backup.sql les utilisateurs disponible
dans la base de données, dans notre cas , on a deux utilisateurs : ipcom et postgres .

postgres@server-ipcom:~$ less ipcomdb_all_db.sql


Nous allons faire la sauvegarde du schéma de la base de données, ici seules les

définitions des objets (schéma) sont sauvegardées, sans les données.

nous allons visualiser le fichier ipcomdb_all_db.sql .

postgres@server-ipcom:~$ less ipcomdb_all_db.sql


Nous allons sauvegarder les data de la base de données ipcomdb.

Nous allons faire la sauvegarde des data de la base de données ipcomdb, ici seules les

données sont sauvegardées.

Nous allons visualiser le fichier ipcomdb_all_db.sql et on constate exactement que les


lignes que nous avons inséré dans la table client sont bien visible.
Nous
allons ZIP la base de données ipcomdb dans un fichier ipcomdb_all_db.sql.gz .
postgres@server-ipcom:~$ pg_dumpall | gzip -c > ipcomdb_all_db.sql.gz

Voici le contenu du fichier qu’on a zip avec pg_dumpall

pg_restore
pg_restore est un outil qui permet de restaurer une base de données PostgreSQL à partir
d'une archive créée par pg_dump dans un des formats non textuel .Il lance les
commandes nécessaires pour reconstruire la base de données dans l'état où elle était
au moment de sa sauvegarde. Les fichiers d'archive permettent aussi à pg_restore d'être
sélectif sur ce qui est restauré ou même de réordonner les éléments à restaurer. Les
fichiers d'archive sont conçus pour être portables entre les architectures.

pg_restore peut opérer dans deux modes. Si un nom de base de données est spécifié,
pg_restore se connecte à cette base de données et restaure le contenu de l'archive
directement dans la base de données. Sinon, un script contenant les commandes SQL
nécessaires pour reconstruire la base de données est créé et écrit dans un fichier ou sur
la sortie standard. La sortie du script est équivalente à celles créées par le format en
texte plein de pg_dump. Quelques-unes des options contrôlant la sortie sont du coup
analogues aux options de pg_dump.

De toute évidence, pg_restore ne peut pas restaurer l'information qui ne se trouve pas
dans le fichier d'archive. Par exemple, si l'archive a été réalisée en utilisant l'option
donnant les « données sauvegardées par des commandes INSERT », pg_restore ne sera
pas capable de charger les données en utilisant des instructions COPY.

Nous allons créer un fichier de sauvegarde restore_ipcomdb.dump.

postgres@server-ipcom:~$ pg_dump -Fc ipcomdb >


restore_ipcomdb.dump
Maintenant, on va supprimer la base de données ipcomdb et la recréer à partir de la
sauvegarde restore_ipcomdb.dump :

postgres@server-ipcom:~$ dropdb ipcomdb

On liste les bases de données pour voir si la base de données ipcomdb est bien
supprimée, on constate que la base de données ipcomdb est supprimée.

A présent nous allons restore notre base de données ipcomdb que nous avons supprimée.

postgres@server-ipcom:~$ pg_restore -C -d postgres restore_ipcomdb.dump


La base nommée avec l'option -d peut être toute base de données existante dans le
cluster ; pg_restore l'utilise seulement pour exécuter la commande CREATE DATABASE
pour ipcomdb Avec -C, les données sont toujours restaurées dans le nom de la base qui
apparaît dans le fichier de sauvegarde.

Une fois lancée la commande de restauration, on aperçoit que la base données qu’on
vient juste de supprimer est réapparue avec les données .
On va se connecter dans notre base de données ipcomdb pour vérifier les données. On
constate que

nos données sont intacts.

Vous aimerez peut-être aussi