Sauvegarde et restauration PostgreSQL

PostgreSQLPostgreSQLBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce labo, vous apprendrez comment sauvegarder et restaurer des bases de données PostgreSQL. Ce labo couvre les techniques essentielles pour protéger vos données, notamment l'exportation d'une base de données à l'aide de pg_dump, la restauration d'une base de données à l'aide de pg_restore, et la sauvegarde de tables spécifiques.

Vous commencerez par créer une base de données exemple nommée mydatabase. Ensuite, vous exporterez cette base de données vers un fichier SQL à l'aide de la commande pg_dump. Puis, vous explorerez comment restaurer une base de données à partir d'un fichier de sauvegarde à l'aide de pg_restore. Enfin, vous apprendrez comment sauvegarder uniquement des tables spécifiques au sein d'une base de données et vérifier l'intégrité des données restaurées.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL postgresql(("PostgreSQL")) -.-> postgresql/PostgreSQLGroup(["PostgreSQL"]) postgresql/PostgreSQLGroup -.-> postgresql/db_setup("Create New Database") postgresql/PostgreSQLGroup -.-> postgresql/db_access("Connect To Database") postgresql/PostgreSQLGroup -.-> postgresql/table_init("Create Basic Table") postgresql/PostgreSQLGroup -.-> postgresql/row_add("Insert One Row") postgresql/PostgreSQLGroup -.-> postgresql/data_all("Select All Data") postgresql/PostgreSQLGroup -.-> postgresql/row_drop("Delete One Row") subgraph Lab Skills postgresql/db_setup -.-> lab-550949{{"Sauvegarde et restauration PostgreSQL"}} postgresql/db_access -.-> lab-550949{{"Sauvegarde et restauration PostgreSQL"}} postgresql/table_init -.-> lab-550949{{"Sauvegarde et restauration PostgreSQL"}} postgresql/row_add -.-> lab-550949{{"Sauvegarde et restauration PostgreSQL"}} postgresql/data_all -.-> lab-550949{{"Sauvegarde et restauration PostgreSQL"}} postgresql/row_drop -.-> lab-550949{{"Sauvegarde et restauration PostgreSQL"}} end

Créer et remplir une base de données

Dans cette étape, vous allez créer une base de données PostgreSQL nommée mydatabase et la remplir avec des exemples de données. Cette base de données sera utilisée pour les exercices de sauvegarde et de restauration dans les étapes suivantes.

Tout d'abord, créez la base de données mydatabase à l'aide de la commande suivante :

sudo -u postgres psql -c "CREATE DATABASE mydatabase;"

Cette commande se connecte au serveur PostgreSQL en tant qu'utilisateur postgres et exécute la commande SQL CREATE DATABASE mydatabase.

Ensuite, connectez-vous à la base de données mydatabase à l'aide de la commande psql :

sudo -u postgres psql -d mydatabase

Vous devriez maintenant être dans l'interface (shell) psql, connecté à la base de données mydatabase. Vous verrez une invite de commande comme mydatabase=#.

Maintenant, créez une table nommée users avec une colonne id et une colonne name :

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255)
);

Cette commande SQL crée une table nommée users avec deux colonnes : id (un entier à incrémentation automatique) et name (une chaîne de caractères).

Ensuite, insérez des exemples de données dans la table users :

INSERT INTO users (name) VALUES ('Alice');
INSERT INTO users (name) VALUES ('Bob');

Ces commandes SQL insèrent deux lignes dans la table users, avec les noms 'Alice' et 'Bob'.

Enfin, créez une autre table nommée products et insérez des données :

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255)
);

INSERT INTO products (name) VALUES ('Laptop');
INSERT INTO products (name) VALUES ('Tablet');

Pour vérifier que les tables et les données ont été créées avec succès, vous pouvez exécuter les requêtes SQL suivantes :

SELECT * FROM users;
SELECT * FROM products;

Vous devriez voir les données que vous venez d'insérer.

Quittez l'interface psql en tapant :

\q

Vous êtes maintenant de retour dans le terminal Linux.

Exporter la base de données

Dans cette étape, vous allez exporter la base de données mydatabase vers un fichier SQL à l'aide de la commande pg_dump. Ce fichier contiendra les commandes SQL nécessaires pour recréer la base de données.

Exécutez la commande suivante pour exporter la base de données :

pg_dump -U postgres -d mydatabase -f ~/project/mydatabase.sql

Cette commande utilise l'utilitaire pg_dump pour se connecter à la base de données mydatabase en tant qu'utilisateur postgres et exporter la base de données vers un fichier nommé mydatabase.sql dans votre répertoire ~/project.

Pour vérifier que le fichier a été créé avec succès, vous pouvez lister le contenu de votre répertoire ~/project :

ls ~/project

Vous devriez voir mydatabase.sql dans la sortie.

Vous pouvez également afficher les premières lignes du fichier de sauvegarde à l'aide de la commande head :

head ~/project/mydatabase.sql

Cela vous montrera le début du script SQL qui a été créé par pg_dump.

Restaurer la base de données

Dans cette étape, vous allez restaurer la base de données mydatabase à partir du fichier de sauvegarde mydatabase.sql dans une nouvelle base de données nommée newdatabase.

Tout d'abord, créez la base de données newdatabase :

sudo -u postgres psql -c "CREATE DATABASE newdatabase;"

Maintenant, restaurez la base de données à partir du fichier de sauvegarde :

pg_restore -U postgres -d newdatabase ~/project/mydatabase.sql

Cette commande utilise l'utilitaire pg_restore pour se connecter à la base de données newdatabase en tant qu'utilisateur postgres et restaurer la base de données à partir du fichier mydatabase.sql.

Pour vérifier que la base de données a été restaurée avec succès, connectez-vous à la base de données newdatabase à l'aide de psql :

sudo -u postgres psql -d newdatabase

Et ensuite, listez les tables :

\dt

Vous devriez voir les tables users et products listées.

Vous pouvez également interroger les données dans les tables pour vérifier qu'elles ont été restaurées correctement :

SELECT * FROM users;
SELECT * FROM products;

Vous devriez voir les mêmes données que celles que vous avez insérées à l'étape 1.

Quittez l'interface psql :

\q

Sauvegarder et restaurer une seule table

Dans cette étape, vous apprendrez comment sauvegarder et restaurer une seule table à partir d'une base de données PostgreSQL. Cela peut être utile si vous n'avez besoin de sauvegarder qu'une partie spécifique de votre base de données.

Tout d'abord, sauvegardons uniquement la table users de la base de données mydatabase :

pg_dump -U postgres -d mydatabase -t users -f ~/project/users_only.sql

Cette commande utilise l'option -t pour spécifier que seule la table users doit être sauvegardée.

Maintenant, restaurons cette table dans la base de données newdatabase. Tout d'abord, supprimons la table users existante dans newdatabase :

sudo -u postgres psql -d newdatabase -c "DROP TABLE IF EXISTS users;"

Ensuite, restaurez la table users à partir du fichier users_only.sql :

pg_restore -U postgres -d newdatabase ~/project/users_only.sql

Pour vérifier que la table a été restaurée avec succès, connectez-vous à la base de données newdatabase à l'aide de psql :

sudo -u postgres psql -d newdatabase

Et ensuite, listez les tables :

\dt

Vous devriez voir la table users listée, mais pas la table products (puisque nous n'avons restauré que la table users).

Vous pouvez également interroger les données dans la table users pour vérifier qu'elles ont été restaurées correctement :

SELECT * FROM users;

Vous devriez voir les mêmes données que celles qui se trouvaient dans la table users de la base de données mydatabase.

Quittez l'interface psql :

\q

Résumé

Dans ce TP (travaux pratiques), vous avez appris comment sauvegarder et restaurer des bases de données PostgreSQL à l'aide des utilitaires pg_dump et pg_restore. Vous avez appris à :

  • Créer une base de données et la remplir avec des données.
  • Exporter une base de données entière vers un fichier SQL à l'aide de pg_dump.
  • Restaurer une base de données à partir d'un fichier SQL à l'aide de pg_restore.
  • Sauvegarder une seule table d'une base de données à l'aide de pg_dump.
  • Restaurer une seule table dans une base de données à l'aide de pg_restore.

Ce sont des compétences essentielles pour tout administrateur de base de données PostgreSQL.