Vous pouvez effectuer des sauvegardes PostgreSQL à l'aide de la commande pg_dump. Dans cet article, Grant Fritchey explique comment sauvegarder et restaurer à l'aide des utilitaires pg_dump et pg_restore.
Série à ce jour :
- Connectez-vous à PostgreSQL : découvrez PostgreSQL avec Grant
- Créer des bases de données et des tables dans PostgreSQL : Apprenez PostgreSQL avec Grant
- Comment sauvegarder et restaurer avec PostgreSQL : Apprendre PostgreSQL avec Grant
- Types de données PostgreSQL : découvrez PostgreSQL avec Grant
L'une des premières préoccupations lors de l'examen d'un nouveau système est l'état des sauvegardes. Je ne vois rien dans PostgreSQL qui me mènerait à une conclusion différente. Mais je n'avais pas réalisé à quel point j'ouvrais une boîte de bogues dans la poursuite de la sauvegarde et de la restauration.
Au lieu de parler tout de suite de sauvegarde, parlons de restauration.
Stratégie de restauration
Autant que je sache, il y a un adage dont il est issu.Kimberly Tripp: La qualité de la sauvegarde est aussi bonne que la dernière restauration. En d'autres termes, vous avez besoin d'une sauvegarde, mais l'important est de pouvoir restaurer vos données. Vous pouvez créer un nombre infini de sauvegardes, mais si vous ne pouvez pas en restaurer ne serait-ce qu'une seule, c'est juste une perte d'espace. Par conséquent, avant de commencer à penser aux sauvegardes, vous devez réfléchir à la manière dont vous allez restaurer votre système.
La restauration de base de données est un sujet important. Cet article pourrait couvrir toutes sortes de permutations de différentes méthodes de restauration d'une base de données. Cependant, afin de garder la taille de cet article raisonnable, nous nous concentrerons sur un mécanisme de restauration, la restauration à partir d'une sauvegarde, car nous n'avons pas encore appris tout ce que nous devons savoir. Il est possible de restaurer à un moment précis, mais je garderai les détails sur la façon de le faire pour un prochain article.
Une simple restauration à partir d'une sauvegarde vise à remettre la base de données dans l'état où elle se trouvait lors de la création de la sauvegarde. Ce type d'opération de restauration est acceptable sur les systèmes de développement et de test. Il s'agit d'un moyen simple de migrer rapidement votre base de données vers un nouveau serveur. Cependant, il existe une limitation selon laquelle vous ne pouvez restaurer que jusqu'au point de sauvegarde. Si des données ou des modifications structurelles se produisent après la sauvegarde et que vous souhaitez les restaurer, ce n'est pas possible.
La restauration ponctuelle peut aider ici. Généralement, la plupart des organisations sont préoccupées par la perte de données. Par exemple, si vous créez une sauvegarde une fois par jour et que quelque chose ne va pas environ 12 heures plus tard dans la journée, vous perdrez toutes ces données. La restauration à un instant donné signifie être capable de récupérer la dernière sauvegarde et toutes les modifications apportées à la base de données depuis cette sauvegarde. La récupération ponctuelle est effectuée via un journal d'écriture anticipée (WAL) maintenu par PostgreSQL.
WAL est automatiquement créé et maintenu par le serveur. Vous pouvez configurer la taille et le nombre de fichiers dans WAL. Théoriquement, un nombre infini de fichiers WAL peuvent être lus avant d'atteindre un certain point. Cependant, cela introduit un autre aspect de la stratégie de restauration : le temps de récupération.
Vous devez élaborer une stratégie de récupération qui définit comment la récupération sera effectuée et combien de temps cela prendra. Les systèmes de développement nécessitent généralement des sauvegardes de base de données faciles. Vous avez terminé. Étant donné que les systèmes de production nécessitent des restaurations ponctuelles, vous devrez peut-être sauvegarder les bases de données qui nécessitent une gestion de fichiers WAL.
Une fois que vous avez défini vos besoins, vous pouvez choisir le bon outil de sauvegarde.
Sauvegarde de la base de données
Si vous n'êtes intéressé que par une simple restauration de base de données, les meilleurs outils pour le travail sont :pg_dump
. La syntaxe de base est simple.
1 | pg_dumpnom de la base de données>fichier de sauvegarde |
Cependant, cette syntaxe simple ne fonctionnera pas car vous exécutez votre base de données dans un conteneur ou sur le cloud, et votre service s'exécute sous une connexion différente de celle que vous utilisez pour vous connecter à distance. Alternativement, vous pouvez modifier légèrement la commande.
1 | pg_dump-Upostgresapprentissage post-universitaire>test de cul 1 |
Cette commande fonctionne car vous spécifiez un utilisateur pour exécuter le service en tant que.
Si vous souhaitez exécuter PostgreSQL dans Docker, vous devrez ouvrir une commande shell dans votre conteneur comme suit : PostgreHome est le nom du conteneur.
1 | dockersrécipientExécuter-quepost grehome/Lieu de stockage/frapper |
Après cela, l'exécution de la syntaxe d'origine fonctionne très bien et vous trouverez le fichier de sauvegarde dans le répertoire à partir duquel vous exécutez la commande, sauf si vous spécifiez un chemin.
Lorsque j'exécute une commande avec un conteneur à partir d'une ligne de commande externe, l'utilisateur est invité à entrer un mot de passe. Mais une fois que vous l'avez nourri, cela fonctionne à nouveau.
Vous pouvez exercer plus de contrôle en définissant diverses options.pg_dump
Nous couvrirons certains d'entre eux plus tard. Cependant, une option à envisager immédiatement, en particulier lorsque vous réfléchissez à la manière de restaurer une base de données, consiste à modifier la sortie. Par défaut, pg_dump est dirigé vers des fichiers SQL bruts.Pg_dump
Vous pouvez également en faire un format de fichier numérique compressé en ajoutant un fichier .-FC
Il s'agit d'un format personnalisé :
1 | Pg_dump -U postgres -FC apprentissage post-universitaire > Coutume。DMP |
Vous pouvez sauvegarder votre base de données en utilisant l'une de ces deux méthodes. Parlons maintenant de l'exécution d'une restauration.
récupération de base de données
Sortie par défautpg_dump
Les commandes sont intéressantes. Cependant, cela devient très long et devient long très rapidement. J'ai une base de données très simple créée à partir d'autres scripts de cette série jusqu'à présent. Ci-dessous une partie de la sortiepg_dump
format par défaut qui peut être affiché à l'aideChat
:
1 2 3 4 5 6 7 8 9 dix 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | -- -- Vidage de la base de données PostgreSQL -- -- Vidage de la base de données version 14.1 (Debian 14.1-1.pgdg110+1) -- Vidé par pg_dump version 14.1 paramètre délai d'expiration de l'instruction = 0; paramètre délai de verrouillage = 0; paramètre idle_in_transaction_session_timeout = 0; paramètre codage_client = 「UTF8」; paramètre chaîne conforme aux normes = sur; sélectionner pg_catalog。set_config('chemin de recherche'、 」、 erreur); paramètre check_function_body = erreur; paramètre xmloption = contenu; paramètre client_min_messages = avertir; paramètre sécurité des lignes = désactivé; -- -- nom : hsr ; type : schéma ; schéma : - ; propriétaire : postgres -- créer schéma LGV; changement schéma LGV propriétaire À postgres; paramètre Espace table par défaut = 」; paramètre méthode d'accès aux tables par défaut = tas; -- -- nom : marque de la radio ; type : table ; schéma : hsr ; propriétaire : postgres -- créer tableau LGV。feu sans fil( marques de radio entier Non nul、 extincteur sans fil personnage Changement(50) Non nul ); |
Cela continuera à partir de là. en bref,pg_dump
Scriptez la base de données, la structure et les données dans un fichier. Il s'agit d'un fichier SQL qui peut être exécuté à partir de psql ou d'autres outils. Récupérez les objets et les données créés à l'aide de SQL à partir du processus pg_dump. Ce fichier contient des données et peut être très volumineux selon la base de données.
La récupération consiste simplement à réexécuter le script, c'est-à-dire à exécuter simplement le SQL. Vous pouvez l'ouvrir dans l'interface graphique de votre choix ou utiliser l'utilitaire de ligne de commande comme suit :
1 | SQL -tu postgres apprentissage post-universitaire < test de cul 1 |
Bien sûr, vous devez vous assurer que la base de données est vide. Sinon, les données déjà existantes seront reconstruites et réinsérées. Vous pouvez soit supprimer la base de données existante et créer une nouvelle base de données avant d'exécuter le script, soit supprimer tous les objets de la base de données avant d'exécuter le script.
Si vous choisissez d'obtenir des formats de fichiers personnalisés, vous aurez besoin de nouvelles commandes pour les lire car il n'y a pas d'ensemble simple de scripts SQL.pg_restore。
Commande de base à utiliserpg_restore
Aussi simple que pg_dump.
1 | pg_restore -d apprentissage post-universitaire -U postgresCoutume。DMP |
Les mêmes règles s'appliquent. La base de données doit être soit une nouvelle base de données, soit une base de données nettoyée, sauf si vous profitez des fonctionnalités supplémentaires décrites lors de l'utilisation de formats de fichiers personnalisés. Par exemple, vous pouvez restaurer vers une base de données où tous les objets restent à l'intérieur. Vous pouvez choisir de supprimer d'abord les objets existants en remplaçant la commande par :
1 | pg_restore -d apprentissage post-universitaire -U postgres -c Coutume。DMP |
commande-c
, Aussi- beau
, supprimez d'abord l'objet, mais si vous ajoutez un nouvel objet après la création de la sauvegarde, vous risquez d'obtenir un message d'erreur. Vous pouvez également direpg_restore
Pour créer d'abord la base de données :
1 | pg_restore -d postgres -U postgres -C Coutume。DMP |
de-C
, Aussi- créer
, La commande essaiera de créer la base de données postgrelearning. S'il existe, vous obtiendrez une erreur et vous pourrez le modifier à nouveau.pg_restore
Instructions:
1 | pg_restore -d postgres -U postgres -C -c Coutume。DMP |
courir les deux- beau
et- créer
par conséquentpg_restore
Supprimez et recréez la base de données. N'oubliez pas de vous connecter d'abord à une autre base de données.-d
Sélectionnez l'option pour utiliser le nom de la base de données du fichier de vidage dans la restauration.
Lors de l'exécution d'un script SQL de base,pg_dump
Les commandes sont simples, mais ne vous donnent pas beaucoup de contrôle. Vous constaterez que vous disposez de plusieurs options lorsque vous travaillez avec des formats de fichiers personnalisés.pg_restore
. utiliserpg_restore
tu peux:
- Restaurer uniquement les données, pas le schéma
- Restaurer le schéma uniquement, pas de données
- Imprimer le contenu du fichier de vidage sous forme de liste d'objets.
- Définir une liste spécifique d'objets à restaurer
- désactiver le déclencheur
- Utilisez plusieurs tâches simultanées pour accélérer l'exécution de la restauration.
- Sélectionnez des objets individuels à restaurer
De nombreux autres comportements peuvent être contrôléspg_restore
Ce n'est pas le cas des articles d'introduction. Mais en résumé, ce qui suit vous donne plus de contrôle sur ce qui est restauré.pg_restore
Utilisez un format de vidage personnalisé au lieu du SQL standard.
Option pg_dump
Nous vous avons déjà montré une option disponiblepg_dump
, un format de fichier personnalisé. Quelques options supplémentaires vous permettent de contrôler ce qui est sauvegardé et comment.
Les options sont définies sur la ligne de commande comme indiqué précédemment. Vous pouvez utiliser des abréviations comme-un
Cela signifie ne vider que les données d'une base de données spécifique. Alternativement, vous pouvez utiliser l'option complète.--data_only
. Certaines options sont complètes, mais certaines nécessitent des informations supplémentaires.
Par exemple, vous pouvez spécifier qu'un vidage est prêt à nettoyer la base de données dans le cadre de la restauration.
1 | Pg_dump -c apprentissage post-universitaire > PG。SQL |
Maintenant, lorsque je lance le script, il contient:baisse
commande.
Vous pouvez utiliser des modèles d'inclusion ou d'exclusion pour déplacer uniquement certains objets dans la base de données. Par exemple, pour exclure les schémas commençant par la chaîneDéveloppeur
En eux, vous pouvez faire ceci:
1 | Pg_dump -N Développeur* apprentissage post-universitaire > pas gras。SQL |
Il existe également des commandes qui vous permettent de :
- Schéma de sauvegarde uniquement sans données
- Sauvegarde uniquement les données, sans définitions de schéma.
- La définition de plusieurs tâches simultanées accélérera l'exécution de la sauvegarde.
- Ajoutez des commandes conditionnelles.
S'il y a
, faire le ménage
Il y en a beaucoup d'autres.
Comment sauvegarder toutes les bases de données
Il est très probable que vous ayez plusieurs bases de données. peut scripterpg_dump
Vous devez donc l'exécuter plusieurs fois, en spécifiant la base de données à sauvegarder et la destination de la sauvegarde. Si vous disposez d'un processus de sauvegarde hautement personnalisé et propre à chaque base de données, il s'agit probablement de la meilleure option. Mais vous avez également la possibilité d'utiliserpg_dumpall
. Exporte toutes les bases de données sur le serveur spécifié dans un seul fichier au lieu d'exporter une base de données à la fois. depg_dumpall
La commande est fondamentalement juste un wrapperpg_dump
. Cependant, puisque toutes les bases de données sont vidées,pg_dumpall
Il collecte également les objets dépendant de la base de données dans les tables système.
Problèmespg_dumpall
La seule différence est que la sortie est uniquement au format SQL standard. Vous ne pouvez pas obtenir un format personnalisé compressé. Cela signifie également que toutes les fonctionnalités ne sont pas disponiblespg_restore
. Comme auparavant, cela signifie que vous ne pouvez restaurer que vers une base de données vide.
Autres mécanismes de sauvegarde
Comme avec la plupart des principaux SGBDR, des solutions tierces existent pour PostgreSQL. En outre, si vous exécutez AWS RDS, AWS Aurora, Azure Database pour PostgreSQL ou GCP SQL Database pour PostgreSQL, ils disposent tous de mécanismes de sauvegarde et de restauration intégrés. Vous pouvez également sauvegarder et restaurer à partir de PGAdmin4 et restaurer à partir d'Azure Data Studio. De plus, plusieurs solutions scriptées sont disponibles.Communauté PostgreSQL. Nous vous recommandons vivement d'apprendre à sauvegarder et à restaurer votre base de données à l'aide d'outils natifs. Cependant, une fois que vous avez développé vos compétences, vous pouvez passer à une autre solution.
en conclusion
La possibilité de restaurer une base de données PostgreSQL est importante. Obtenir une sauvegarde rapide est très facilepg_dump
C'est une commande et excellent pour le développement. Cette commande crée un fichier de script qui peut être lu par défaut. Il existe également d'autres options.-FC
Pour créer une sauvegarde dans un format personnalisé pouvant être utilisé avecpg_restore
instructions. depg_dump
Cette commande offre plusieurs options, notamment la possibilité de supprimer et de créer des bases de données. Si vous devez sauvegarder toutes les bases de données,pg_dumpall
Cependant, il n'est pas très flexible.
Les bases de données de production doivent généralement pouvoir être restaurées à un moment donné, avoir des sauvegardes cryptées et ont souvent d'autres exigences qui nécessitent l'utilisation d'autres options telles que WAL ou des outils tiers. L'explication de la restauration ponctuelle est intentionnellement réservée à un article séparé, car elle est beaucoup plus complexe que les autres articles.pg_dump
。
FAQs
How to connect to PostgreSQL from command line? ›
Connect to PostgreSQL from the command line. At the command line in your operating system, type the following command. user@user-pc:~$ sudo -i -u postgres postgres@user-pc:~$ psql psql (9.3.5, server 9.3.6) Type "help" for help.
How to use Pg_restore in PostgreSQL? ›pg_restore modes
There are two modes the utility uses. If the user specifies a database name, pg_restore connects to that database and restores content directly on it. If the name is left out, the process creates a script with the SQL commands to rebuild the database.
- Shut down the PostgreSQL service.
- Run the following command: PostgreSQLdump -u root -p TeamWorks >/backupdir/TeamWorksback.sql. This creates a file named TeamWorksback that can be used to restore the database.
- Restart PostgreSQL.
Execute the “CREATE TABLE” command from the SQL SHELL for creating a table in PostgreSQL. Here is the basic syntax for table creation using psql: CREATE TABLE table_name( first_column data_type, second_column data_type, third_column data_type, ..... nth_column data_type, );
How to connect access to PostgreSQL database? ›Open your Microsoft Access database. Select the External Data tab in the ribbon. Expand the New Data Source drop-down and select From Other Sources, then select ODBC Dababase. In the Get External Data - ODBC Database dialog box, select Link to the data source by creating a linked table.
How to connect PostgreSQL database? ›- Step1: Launch the pgAdmin application. ...
- Step2: Create a server. ...
- Step3: Provide the server name. ...
- Step4: Provide the host and password. ...
- Step5: Expanding the server. ...
- Step6: Open the Query tool. ...
- Step7: Enter the command in the Query editor. ...
- Step1: Open the psql.
- Enter the following command to create a backup file: pg_dump my_database > my_database.sql. Replace my_database with the name of the database to be backed up.
- Restore a single database from backup in PostgreSQL. Just use “psql” command to restore PostgreSQL database. psql my_database < my_database.sql.
To set Windows PATH for PostgreSQL tools, firstly, open System Properties > open the “Environment Variable” window > select the “Path” variable under the system variables > click on the “Edit..” button > select the “NEW” button > specify the Postgres bin directory's path > and click on the “OK” button to save all the ...
How do I backup and restore a schema in PostgreSQL? ›Restoring Database Schema from PostgreSQL Database
-n or --schema – defines the name of the schema to be restored, it instructs pg_restore to restore only objects that are in the named schema. backup. dump – the name of the database backup file.
Backing up a PostgreSQL Database
To back up your database onto a plain-text SQL file, simply login to your database server. Then switch to the Postgres account, and run the command. The plain-text SQL file will have the commands required to reconstruct the entire database to its state when backed up.
How to take database backup using command prompt? ›
- For a backup, enter the following in the SQLCMD window. ...
- To restore, use the following in the SQLCMD window: ...
- SQLCMD is the newest, fanciest command-line interface for SQL Server. ...
- For restore.
- Go to. <Secure Agent installation directory>\apps\process-engine\data\db\util. .
- Run the following command: db_backup.bat <dbusername> <dbpassword> <path to backup file along with name of backup file with a ".dump" extension> <dbport>
- Step 1: Create a Role. ...
- Step 2: Verify Roles. ...
- Step 3: Create Table. ...
- Step 4: Login as New User. ...
- Step 5: Insert Data. ...
- Step 6: Grant All Privileges. ...
- Step 7: Insert Data. ...
- Step 8: Fetch Data.
- Method 1: Perform PostgreSQL Import CSV Job using the COPY Command.
- Method 2: Perform PostgreSQL Import CSV Job using pgAdmin.
- Method 3: Perform PostgreSQL Import CSV Job using Hevo Data.
To create a primary key in Postgres, the user must specify the keyword “PRIMARY KEY” along with the targeted column. The following syntax shows how a primary key is created during table creation: CREATE TABLE table_name( column_1 data_type PRIMARY KEY, column_2 data_type );
How to view Postgres database command line? ›In summary, to list databases in Postgres, you can use the \l, \list, or \l+ commands in the psql command-line interface, or you can query the pg_catalog.pg_database system catalog. These methods will provide you with a list of databases on the server, along with information about each database.
How to connect to database using SQL command? ›Open a Command Prompt window, and type sqlcmd -SmyServer\instanceName. Replace myServer\instanceName with the name of the computer and the instance of SQL Server that you want to connect to. Press ENTER. The sqlcmd prompt ( 1> ) indicates that you are connected to the specified instance of SQL Server.