Astuces techniques : Comment sauvegarder et restaurer la base de données Postgres ?

Karan Singh

19 juin 2013

Email

1 min read

Astuces techniques : Comment sauvegarder et restaurer la base de données Postgres ?

Points Clés

    • Les sauvegardes PostgreSQL peuvent cibler une seule table, une seule base de données ou toutes les bases de données selon vos besoins.

    • pg_dump crée un fichier texte SQL contenant les DDL et les données nécessaires pour recréer la table ou la base de données cible.

    • pg_dumpall sauvegarde chaque base de données sur l'instance Postgres.

    • La restauration se fait avec psql, qui exécute le dump SQL dans la base de données cible.

    • Les restaurations au niveau de la table nécessitent de s'assurer que la table n'existe pas déjà pour éviter les conflits.

    • Lors de la sauvegarde de tables individuelles, soyez attentif aux dépendances relationnelles.

    • Les dumps peuvent être effectués à partir de Postgres local et restaurés sur des instances distantes.

    • Les sauvegardes incluent les commandes CREATE, ALTER, et COPY en fonction de ce qui est exporté.

    • Une stratégie de sauvegarde appropriée dépend de la compréhension des relations de tables, de l'utilisation du schéma et des environnements de déploiement.

    • Assurez toujours l'intégrité des données en effectuant des sauvegardes qui incluent les tables référencées lorsque cela est nécessaire.

Points forts des Q&A

  • Que fait réellement pg_dump ?

    pg_dump génère un fichier SQL basé sur du texte contenant l'ensemble complet des commandes nécessaires pour recréer une table ou une base de données exactement comme elle existait au moment de la sauvegarde.

  • Puis-je sauvegarder juste une table au lieu d'une base de données complète ?

    Oui. Utilisez pg_dump --table TABLENAME pour exporter une table spécifique. Si des tables portant le même nom existent dans différents schémas, utilisez --schema pour spécifier le bon.

  • Devrais-je m'inquiéter des tables associées lors de la sauvegarde d'une seule table ?

    Absolument. PostgreSQL est relationnel, donc d'autres tables peuvent faire référence à celle que vous sauvegardez. Si vous restaurez une seule table sans celles qui lui sont liées, vous risquez de briser l'intégrité référentielle.

  • Comment sauvegarder une base de données complète ?

    Exécuter une commande comme :

    pg_dump -U <user> <database> -f <output.sql>

    Cela exporte toutes les tables, définitions de schéma, index et données pour cette base de données.

  • Que fait pg_dumpall ?

    pg_dumpall sauvegarde chaque base de données sur le serveur dans un seul fichier SQL. C’est utile lors de la migration ou de la création d'un instantané d'une instance Postgres entière.

  • Puis-je restaurer une table dans une base de données existante ?

    Oui. Utilisez psql -U <user> -f <file.sql> <database>.

    Mais assurez-vous que la table n'existe pas déjà — sinon vous obtiendrez des erreurs "existe déjà" lors de la restauration.

  • Que se passe-t-il lors d'une restauration complète de la base de données ?

    Le fichier de restauration s'exécute :

    • CREATE TABLE

    • ALTER TABLE

    • COPY (pour les données de la table)
      rétablissant la base de données à son état exact au moment du dump.

  • Puis-je restaurer sur un serveur différent de celui à partir duquel j'ai effectué la sauvegarde ?

    Oui. Les dumps sont portables. Vous pouvez effectuer une sauvegarde localement et la restaurer sur une instance Postgres distante, à condition que les versions soient compatibles.

  • Est-ce que pg_dump affecte la base de données en cours d'exécution ?

    Non. Cela fonctionne via des requêtes SQL et ne verrouille pas l'ensemble de la base de données. Il capture en toute sécurité une image instantanée cohérente.

  • Comment restaurer toutes les bases de données à partir d'un fichier pg_dumpall ?

    Utilisation :

    psql -U <user> -f all_dump.sql

    Ceci recrée chaque base de données trouvée dans le dump.

Tout d'abord, une mise en garde. Cet article fournit un guide général sur la façon de sauvegarder une table de base de données Postgres. Les exemples fournis ne se réfèrent à aucune table ou base de données spécifique. Si vous essayez de sauvegarder une table spécifique, vous devriez également sauvegarder les tables qui se réfèrent aux tables d'origine. Comme Postgres est une base de données relationnelle, il y aura toujours des références entre plusieurs tables.

Ceci est un document 'comment faire' qui ne fournit que des exemples de commandes, comment cela est réellement fait dépend uniquement de la personne qui le fait et des cas d'utilisation spécifiques. Toujours maintenir l'intégrité des données que vous essayez de sauvegarder. Sauvegarder la base de données entière est toujours une option sûre, mais lorsqu'on sauvegarde des tables spécifiques, il faut être prudent.

Tout d'abord, une mise en garde. Cet article fournit un guide général sur la façon de sauvegarder une table de base de données Postgres. Les exemples fournis ne se réfèrent à aucune table ou base de données spécifique. Si vous essayez de sauvegarder une table spécifique, vous devriez également sauvegarder les tables qui se réfèrent aux tables d'origine. Comme Postgres est une base de données relationnelle, il y aura toujours des références entre plusieurs tables.

Ceci est un document 'comment faire' qui ne fournit que des exemples de commandes, comment cela est réellement fait dépend uniquement de la personne qui le fait et des cas d'utilisation spécifiques. Toujours maintenir l'intégrité des données que vous essayez de sauvegarder. Sauvegarder la base de données entière est toujours une option sûre, mais lorsqu'on sauvegarde des tables spécifiques, il faut être prudent.

Tout d'abord, une mise en garde. Cet article fournit un guide général sur la façon de sauvegarder une table de base de données Postgres. Les exemples fournis ne se réfèrent à aucune table ou base de données spécifique. Si vous essayez de sauvegarder une table spécifique, vous devriez également sauvegarder les tables qui se réfèrent aux tables d'origine. Comme Postgres est une base de données relationnelle, il y aura toujours des références entre plusieurs tables.

Ceci est un document 'comment faire' qui ne fournit que des exemples de commandes, comment cela est réellement fait dépend uniquement de la personne qui le fait et des cas d'utilisation spécifiques. Toujours maintenir l'intégrité des données que vous essayez de sauvegarder. Sauvegarder la base de données entière est toujours une option sûre, mais lorsqu'on sauvegarde des tables spécifiques, il faut être prudent.

SQL-dump/pg_dump:

L'idée derrière la méthode SQL-dump est de générer un fichier texte avec des commandes SQL qui, une fois réintroduites dans le serveur, recréeront la base de données dans le même état qu'elle était au moment du dump. PostgreSQL fournit le programme utilitaire pg_dump à cette fin.

pg_dump est un outil efficace et complet pour effectuer des sauvegardes de bases de données Postgres et utiliser ces sauvegardes pour restaurer la base de données Postgres. Cependant, il n'est pas limité uniquement à la base de données. Nous pouvons utiliser pg_dump pour sauvegarder des tables et ensuite les utiliser pour restaurer des tables individuelles également. En utilisant pg_dump, vous pouvez sauvegarder la base de données locale et la restaurer sur une base de données distante.

L'idée derrière la méthode SQL-dump est de générer un fichier texte avec des commandes SQL qui, une fois réintroduites dans le serveur, recréeront la base de données dans le même état qu'elle était au moment du dump. PostgreSQL fournit le programme utilitaire pg_dump à cette fin.

pg_dump est un outil efficace et complet pour effectuer des sauvegardes de bases de données Postgres et utiliser ces sauvegardes pour restaurer la base de données Postgres. Cependant, il n'est pas limité uniquement à la base de données. Nous pouvons utiliser pg_dump pour sauvegarder des tables et ensuite les utiliser pour restaurer des tables individuelles également. En utilisant pg_dump, vous pouvez sauvegarder la base de données locale et la restaurer sur une base de données distante.

L'idée derrière la méthode SQL-dump est de générer un fichier texte avec des commandes SQL qui, une fois réintroduites dans le serveur, recréeront la base de données dans le même état qu'elle était au moment du dump. PostgreSQL fournit le programme utilitaire pg_dump à cette fin.

pg_dump est un outil efficace et complet pour effectuer des sauvegardes de bases de données Postgres et utiliser ces sauvegardes pour restaurer la base de données Postgres. Cependant, il n'est pas limité uniquement à la base de données. Nous pouvons utiliser pg_dump pour sauvegarder des tables et ensuite les utiliser pour restaurer des tables individuelles également. En utilisant pg_dump, vous pouvez sauvegarder la base de données locale et la restaurer sur une base de données distante.

Comment sauvegarder une base de données Postgres :

Sauvegarder une table Postgres :

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

La commande ci-dessus est un exemple de comment sauvegarder une table spécifique d'une base de données Postgres. En utilisant la commande ci-dessus, nous sauvegardons la table ‘orgs’ dans le schéma ‘maincontrol’ de la base de données ‘pe’ vers le fichier ms_table.sql. Pour sauvegarder une table spécifique, utilisez l'option –table TABLENAME dans la commande pg_dump. S'il y a les mêmes noms de table dans des schémas différents, alors utilisez l'option –schema SCHEMANAME.

  1. Sauvegarder une base de données Postgres spécifique :

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Ceci est un exemple de sauvegarde d'une base de données Postgres spécifique. En utilisant la commande ci-dessus, nous sauvegardons la base de données pour Message Central ‘pe’ vers le fichier pe_dump.sql. Le fichier de sauvegarde contient des commandes create table, alter table et copy pour toutes les tables de la base ‘pe’.

  2. Sauvegarder toutes les bases de données Postgres :

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Vous pouvez sauvegarder toutes les bases de données en utilisant la commande pg_dumpall. La commande ci-dessus créera un dump de toutes les bases de données résidant sur l'instance Postgres exécutée sur un serveur particulier. Pour lister toutes les bases de données qui ont été sauvegardées, utilisez la commande grep “^[\]connect” all.sql.

Sauvegarder une table Postgres :

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

La commande ci-dessus est un exemple de comment sauvegarder une table spécifique d'une base de données Postgres. En utilisant la commande ci-dessus, nous sauvegardons la table ‘orgs’ dans le schéma ‘maincontrol’ de la base de données ‘pe’ vers le fichier ms_table.sql. Pour sauvegarder une table spécifique, utilisez l'option –table TABLENAME dans la commande pg_dump. S'il y a les mêmes noms de table dans des schémas différents, alors utilisez l'option –schema SCHEMANAME.

  1. Sauvegarder une base de données Postgres spécifique :

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Ceci est un exemple de sauvegarde d'une base de données Postgres spécifique. En utilisant la commande ci-dessus, nous sauvegardons la base de données pour Message Central ‘pe’ vers le fichier pe_dump.sql. Le fichier de sauvegarde contient des commandes create table, alter table et copy pour toutes les tables de la base ‘pe’.

  2. Sauvegarder toutes les bases de données Postgres :

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Vous pouvez sauvegarder toutes les bases de données en utilisant la commande pg_dumpall. La commande ci-dessus créera un dump de toutes les bases de données résidant sur l'instance Postgres exécutée sur un serveur particulier. Pour lister toutes les bases de données qui ont été sauvegardées, utilisez la commande grep “^[\]connect” all.sql.

Sauvegarder une table Postgres :

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

La commande ci-dessus est un exemple de comment sauvegarder une table spécifique d'une base de données Postgres. En utilisant la commande ci-dessus, nous sauvegardons la table ‘orgs’ dans le schéma ‘maincontrol’ de la base de données ‘pe’ vers le fichier ms_table.sql. Pour sauvegarder une table spécifique, utilisez l'option –table TABLENAME dans la commande pg_dump. S'il y a les mêmes noms de table dans des schémas différents, alors utilisez l'option –schema SCHEMANAME.

  1. Sauvegarder une base de données Postgres spécifique :

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Ceci est un exemple de sauvegarde d'une base de données Postgres spécifique. En utilisant la commande ci-dessus, nous sauvegardons la base de données pour Message Central ‘pe’ vers le fichier pe_dump.sql. Le fichier de sauvegarde contient des commandes create table, alter table et copy pour toutes les tables de la base ‘pe’.

  2. Sauvegarder toutes les bases de données Postgres :

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Vous pouvez sauvegarder toutes les bases de données en utilisant la commande pg_dumpall. La commande ci-dessus créera un dump de toutes les bases de données résidant sur l'instance Postgres exécutée sur un serveur particulier. Pour lister toutes les bases de données qui ont été sauvegardées, utilisez la commande grep “^[\]connect” all.sql.

Comment restaurer Postgres Database

  1. Restaurer une table Postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    La commande ci-dessus installera la table qui a été sauvegardée dans le fichier ms_table.sql vers la base de données ‘pe’. Assurez-vous que cette table n’existe pas déjà, ou vous verrez une série d’erreurs ‘existe déjà’. Cette commande crée la table et exporte toutes les données vers la table nouvellement créée.

  2. Restaurer une base de données Postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    De manière similaire à la restauration de la table, nous pouvons utiliser la commande ci-dessus pour restaurer la base de données complète. Ici, nous restaurons la base de données ‘pe’ en utilisant le fichier pe_dump.sql que nous avions créé lors de la sauvegarde de la base de données dans la section Sauvegarde ci-dessus.

  3. Restaurer toutes les bases de données :

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    Restaurez toutes les bases de données en utilisant la commande ci-dessus. ‘all_dump.sql’ était le fichier qui a été créé en utilisant pg_dumpall. La commande ci-dessus nous donnera toutes les bases de données Postgres dans l'état exact où elles étaient lorsque le dump a été effectué du serveur de base de données original.

  1. Restaurer une table Postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    La commande ci-dessus installera la table qui a été sauvegardée dans le fichier ms_table.sql vers la base de données ‘pe’. Assurez-vous que cette table n’existe pas déjà, ou vous verrez une série d’erreurs ‘existe déjà’. Cette commande crée la table et exporte toutes les données vers la table nouvellement créée.

  2. Restaurer une base de données Postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    De manière similaire à la restauration de la table, nous pouvons utiliser la commande ci-dessus pour restaurer la base de données complète. Ici, nous restaurons la base de données ‘pe’ en utilisant le fichier pe_dump.sql que nous avions créé lors de la sauvegarde de la base de données dans la section Sauvegarde ci-dessus.

  3. Restaurer toutes les bases de données :

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    Restaurez toutes les bases de données en utilisant la commande ci-dessus. ‘all_dump.sql’ était le fichier qui a été créé en utilisant pg_dumpall. La commande ci-dessus nous donnera toutes les bases de données Postgres dans l'état exact où elles étaient lorsque le dump a été effectué du serveur de base de données original.

  1. Restaurer une table Postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    La commande ci-dessus installera la table qui a été sauvegardée dans le fichier ms_table.sql vers la base de données ‘pe’. Assurez-vous que cette table n’existe pas déjà, ou vous verrez une série d’erreurs ‘existe déjà’. Cette commande crée la table et exporte toutes les données vers la table nouvellement créée.

  2. Restaurer une base de données Postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    De manière similaire à la restauration de la table, nous pouvons utiliser la commande ci-dessus pour restaurer la base de données complète. Ici, nous restaurons la base de données ‘pe’ en utilisant le fichier pe_dump.sql que nous avions créé lors de la sauvegarde de la base de données dans la section Sauvegarde ci-dessus.

  3. Restaurer toutes les bases de données :

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    Restaurez toutes les bases de données en utilisant la commande ci-dessus. ‘all_dump.sql’ était le fichier qui a été créé en utilisant pg_dumpall. La commande ci-dessus nous donnera toutes les bases de données Postgres dans l'état exact où elles étaient lorsque le dump a été effectué du serveur de base de données original.

Autres news

Lire la suite de cette catégorie

A person is standing at a desk while typing on a laptop.

La plateforme native AI complète qui évolue avec votre business.

A person is standing at a desk while typing on a laptop.

La plateforme native AI complète qui évolue avec votre business.