Sauvegarde et restauration PostgreSQL

PostgreSQLBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez les techniques essentielles pour sauvegarder et restaurer des bases de données PostgreSQL. La gestion appropriée des sauvegardes est une compétence essentielle pour tout administrateur de base de données afin de prévenir la perte de données.

Vous commencerez par créer une base de données d'exemple et la peupler de données. Ensuite, vous utiliserez l'utilitaire pg_dump pour créer une sauvegarde complète de la base de données. Après cela, vous apprendrez à restaurer la base de données à partir du fichier de sauvegarde en utilisant l'outil en ligne de commande psql. Enfin, vous pratiquerez la sauvegarde et la restauration d'une seule table spécifique de votre base de données.

Créer et peupler une base de données d'exemple

Dans cette étape, vous allez créer une base de données PostgreSQL nommée salesdb et la peupler avec des données d'exemple. Cette base de données servira de base aux opérations de sauvegarde et de restauration dans les étapes suivantes.

Étape 1 : Créer la base de données

Tout d'abord, depuis votre terminal, créez la base de données salesdb en utilisant l'utilitaire en ligne de commande createdb. Il s'agit d'un wrapper pratique pour la commande SQL CREATE DATABASE.

createdb salesdb

Étape 2 : Se connecter à la base de données

Ensuite, connectez-vous à votre base de données salesdb nouvellement créée en utilisant le terminal interactif psql.

psql -d salesdb

Vous verrez maintenant l'invite psql, qui ressemble à salesdb=#, indiquant que vous êtes connecté à la base de données salesdb.

Étape 3 : Créer des tables et insérer des données

Dans le shell psql, exécutez les commandes SQL suivantes pour créer deux tables : customers et products.

Créez la table customers :

CREATE TABLE customers (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

Créez la table products :

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price NUMERIC(10, 2)
);

Maintenant, insérez des données d'exemple dans les deux tables.

Insérez des données dans customers :

INSERT INTO customers (name) VALUES ('Alice'), ('Bob');

Insérez des données dans products :

INSERT INTO products (name, price) VALUES ('Laptop', 1200.00), ('Mouse', 25.00);

Étape 4 : Vérifier les données

Pour confirmer que les données ont été correctement insérées, exécutez des requêtes SELECT sur les deux tables.

SELECT * FROM customers;

La sortie devrait être :

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Maintenant, vérifiez la table products :

SELECT * FROM products;

La sortie devrait être :

 id |  name  |  price
----+--------+---------
  1 | Laptop | 1200.00
  2 | Mouse  |   25.00
(2 rows)

Enfin, quittez le shell psql pour revenir à votre terminal habituel.

\q

Vous avez configuré avec succès la base de données pour les étapes suivantes.

Sauvegarder la base de données entière

Dans cette étape, vous utiliserez l'utilitaire pg_dump pour créer une sauvegarde complète de la base de données salesdb. pg_dump génère un fichier contenant des commandes SQL qui peuvent être utilisées pour reconstruire la base de données.

Comprendre pg_dump

pg_dump est un utilitaire PostgreSQL standard pour sauvegarder une seule base de données. Il crée un instantané cohérent de la base de données, même si elle est activement utilisée. Par défaut, il génère un fichier script SQL en texte brut.

Étape 1 : Effectuer la sauvegarde

Depuis votre terminal, exécutez la commande suivante pour exporter la base de données salesdb dans un fichier nommé salesdb.sql à l'intérieur de votre répertoire de projet.

pg_dump salesdb > ~/project/salesdb.sql

Décortiquons la commande :

  • pg_dump salesdb : Ceci spécifie que vous souhaitez sauvegarder la base de données salesdb.
  • > ~/project/salesdb.sql : Ceci redirige la sortie standard de la commande vers un fichier nommé salesdb.sql dans le répertoire ~/project.

Étape 2 : Vérifier le fichier de sauvegarde

Tout d'abord, vérifiez si le fichier a été créé en utilisant la commande ls.

ls -l ~/project

Vous devriez voir salesdb.sql dans la liste des fichiers.

Ensuite, inspectez le contenu du fichier de sauvegarde pour comprendre ce que pg_dump a créé. Utilisez la commande head pour afficher les premières lignes.

head ~/project/salesdb.sql

La sortie affichera le début du script SQL, y compris des commentaires sur la version de pg_dump et des commandes pour configurer l'environnement de la base de données. Cela confirme que votre fichier de sauvegarde est un script SQL valide.

Restaurer la base de données à partir d'une sauvegarde

Dans cette étape, vous apprendrez comment restaurer une base de données à partir d'un fichier de sauvegarde SQL en texte brut. Vous créerez une nouvelle base de données, puis utiliserez l'utilitaire psql pour exécuter les commandes SQL du fichier de sauvegarde.

Comprendre la restauration de base de données

Pour les fichiers SQL en texte brut créés par pg_dump, l'utilitaire psql est l'outil standard pour la restauration. Il lit les commandes SQL du fichier et les exécute sur la base de données spécifiée, recréant ainsi efficacement les tables et les données.

Étape 1 : Créer une nouvelle base de données pour la restauration

Pour éviter d'écraser votre base de données d'origine, vous restaurerez la sauvegarde dans une nouvelle base de données vide. Créez une base de données nommée salesdb_restored.

createdb salesdb_restored

Étape 2 : Restaurer la sauvegarde

Maintenant, utilisez psql pour restaurer la sauvegarde salesdb.sql dans la base de données salesdb_restored.

psql -d salesdb_restored -f ~/project/salesdb.sql

Décortiquons la commande :

  • psql : Le terminal interactif PostgreSQL, qui peut également exécuter des fichiers script.
  • -d salesdb_restored : Spécifie la base de données cible pour la restauration.
  • -f ~/project/salesdb.sql : Spécifie le fichier d'entrée contenant les commandes SQL à exécuter.

Vous verrez la sortie des commandes SQL en cours d'exécution, telles que CREATE TABLE et INSERT.

Étape 3 : Vérifier la base de données restaurée

Connectez-vous à la base de données salesdb_restored pour vérifier que les tables et les données ont été restaurées avec succès.

psql -d salesdb_restored

Dans le shell psql, listez d'abord les tables :

\dt

Vous devriez voir les tables customers et products.

              List of relations
 Schema |   Name    | Type  |  Owner
--------+-----------+-------+----------
 public | customers | table | labex
 public | products  | table | labex
(2 rows)

Ensuite, interrogez la table customers pour vous assurer que les données sont présentes.

SELECT * FROM customers;

La sortie devrait correspondre aux données d'origine.

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Quittez le shell psql.

\q

Vous avez restauré avec succès une base de données à partir d'une sauvegarde.

Sauvegarder et restaurer une table unique

Parfois, vous pourriez avoir besoin de sauvegarder ou de restaurer une table spécifique plutôt que la base de données entière. L'utilitaire pg_dump prend en charge cela avec l'option -t.

Étape 1 : Sauvegarder une table unique

Sauvegardons uniquement la table customers de la base de données d'origine salesdb.

Exécutez la commande suivante dans votre terminal :

pg_dump -d salesdb -t customers > ~/project/customers_table.sql
  • -d salesdb : Spécifie la base de données source.
  • -t customers : Spécifie la table cible à exporter.
  • > ~/project/customers_table.sql : Redirige la sortie vers un nouveau fichier de sauvegarde.

Étape 2 : Simuler une perte de données

Pour démontrer le processus de restauration, supprimons d'abord la table customers de la base de données salesdb_restored afin de simuler une suppression accidentelle.

psql -d salesdb_restored -c "DROP TABLE customers;"

La commande affichera DROP TABLE, confirmant la suppression.

Étape 3 : Restaurer la table unique

Maintenant, restaurez la table customers à partir de votre fichier de sauvegarde spécifique à la table dans la base de données salesdb_restored.

psql -d salesdb_restored -f ~/project/customers_table.sql

Étape 4 : Vérifier la restauration de la table

Enfin, connectez-vous à la base de données salesdb_restored et vérifiez que la table customers est de retour, tandis que la table products reste inchangée.

psql -d salesdb_restored

Dans psql, listez les tables :

\dt

Vous devriez voir à nouveau les tables customers et products listées.

              List of relations
 Schema |   Name    | Type  |  Owner
--------+-----------+-------+----------
 public | products  | table | labex
 public | customers | table | labex
(2 rows)

Interrogez la table customers restaurée pour confirmer que ses données sont intactes.

SELECT * FROM customers;

La sortie devrait afficher les données clients d'origine.

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Quittez le shell psql.

\q

Vous avez sauvegardé et restauré avec succès une table individuelle.

Résumé

Dans ce laboratoire, vous avez appris les procédures fondamentales pour sauvegarder et restaurer des bases de données PostgreSQL. Ces compétences sont essentielles pour la protection des données et la reprise après sinistre.

Vous avez appris à :

  • Créer une base de données et la peupler avec des tables et des données.
  • Utiliser pg_dump pour exporter une base de données entière vers un fichier SQL en texte brut.
  • Utiliser psql pour restaurer une base de données à partir d'un fichier de sauvegarde SQL dans une nouvelle base de données.
  • Sauvegarder une table unique à partir d'une base de données en utilisant l'option -t avec pg_dump.
  • Restaurer une table unique dans une base de données.

La maîtrise de ces commandes vous donne la confiance nécessaire pour gérer et protéger efficacement vos données PostgreSQL.