Comment sauvegarder et restaurer une base de données PostgreSQL

Comment sauvegarder et restaurer une base de données PostgreSQL

Dans un environnement de production, peu importe la taille de votre Postgresql La base de données peut être, le dos régulier est un aspect essentiel de la gestion de la base de données. Dans cet article, vous apprendrez à sauvegarder et à restaurer une base de données PostgreSQL.

Nous supposons que vous avez déjà une installation de travail du système de base de données PostgreSQL. Sinon, lisez nos articles suivants à installer Postgresql Sur votre distribution Linux.

  • Comment installer PostgreSQL et PGADMIN4 dans Ubuntu 20.04
  • Comment installer PostgreSQL et Pgadmin dans Centos 8
  • Comment installer Postgresql et Pgadmin dans Rhel 8

Commençons…

Sauvegarder une seule base de données postgresql

Postgresql fournit le pg_dump Utilité pour vous aider à sauvegarder les bases de données. Il génère un fichier de base de données avec des commandes SQL dans un format qui peut être facilement restauré à l'avenir.

Pour sauvegarder, un Postgresql base de données, commencez par vous connecter à votre serveur de base de données, puis passez à la Postgres compte d'utilisateur et exécuter pg_dump comme suit (remplacer Tecmintdb avec le nom de la base de données, vous souhaitez sauvegarder). Par défaut, le format de sortie est un fichier de script SQL en texte ordinaire.

$ pg_dump Tecmintdb > Tecmintdb.SQL 

Le pg_dump prend également en charge d'autres formats de sortie. Vous pouvez spécifier le format de sortie à l'aide du -F Option, où c FICHIER D'ARCHIVE FORMAT CUSTOM, d signifie l'archive du format de répertoire, et t Moyenne Fichier d'archive de format TAR: Tous les formats conviennent à la saisie dans pg_restore.

Par exemple:

$ pg_dump -f c tecmintdb> tecmintdb.vidage ou $ pg_dump -f t tecmintdb> tecmintdb.le goudron 

Pour vider la sortie au format de sortie du répertoire, utilisez le -F Flag (qui est utilisé pour spécifier le fichier de sortie) pour spécifier le répertoire cible au lieu d'un fichier. Le répertoire qui sera créé par pg_dump ne doit pas exister.

$ pg_dump -f d tecmintdb -f tecmintdumpdir 

Pour soutenir tout Postgresql bases de données, utilisez le pg_dumpall outil comme indiqué.

$ pg_dumpall> all_pg_dbs.SQL 

Vous pouvez restaurer le vidage en utilisant PSQL comme montré.

$ psql -f all_pg_dbs.SQL Postgres 

Restauration d'une base de données PostgreSQL

Pour restaurer un Postgresql base de données, vous pouvez utiliser le PSQL ou pg_restore services publics. PSQL est utilisé pour restaurer les fichiers texte créés par pg_dump alors que pg_restore est utilisé pour restaurer une base de données postgresql à partir d'une archive créée par pg_dump Dans l'un des formats de texte non plaine (personnalisés, goudron ou répertoire).

Voici un exemple de la façon de restaurer un vidage de fichier texte brut:

$ psql Tecmintdb < Tecmintdb.SQL 

Comme mentionné ci-dessus, un vidage de format personnalisé n'est pas un script pour PSQL, il doit donc être restauré avec pg_restore comme montré.

$ pg_restore -d tecmintdb tecmintdb.vidage ou $ pg_restore -d tecmintdb tecmintdb.Tar ou $ pg_restore -d tecmintdb tecmintdumpdir 

Sauvegarder les grandes bases de données postgresql

Si la base de données que vous sauvegardez est grande et que vous souhaitez générer un fichier de sortie assez plus petit, vous pouvez exécuter un vidage compressé où vous devez filtrer la sortie de pg_dump via un outil de compression comme gzip Ou l'un de vos préférés:

$ pg_dump Tecmintdb | gzip> Tecmintdb.gz 

Si la base de données est extrêmement grande, vous pouvez vider en parallèle en déversant numéro_of_jobs tableaux en utilisant simultanément le -J Flag, comme indiqué.

$ pg_dump -f d -j 5 -f tecmintdumpdir 

Il est important de noter que l'option de vidage parallèle réduit le temps du vidage, mais en revanche, il augmente également la charge sur le serveur de base de données.

Sauvegarder des bases de données postgresql distantes

pg_dump est un outil client PostgreSQL ordinaire, il prend en charge les opérations sur les serveurs de base de données distants. Pour spécifier le serveur de base de données distant pg_dump Devrait contacter, utilisez les options de ligne de commande -H Pour spécifier l'hôte distant et -p Spécifie le port distant sur lequel le serveur de base de données écoute. De plus, utilisez le -U Indicateur pour spécifier le nom de rôle de la base de données pour se connecter comme.

N'oubliez pas de remplacer dix.dix.20.dix et 5432 et Tecmintdb avec votre adresse IP d'hôte distante ou votre nom d'hôte, votre port de base de données et votre nom de base de données respectivement.

$ pg_dump -u tecmint -h 10.dix.20.10 -p 5432 Tecmintdb> Tecmintdb.SQL 

Assurez-vous que l'utilisateur se connectant à distance a les privilèges requis pour accéder à la base de données, et la méthode d'authentification de la base de données appropriée est configurée sur le serveur de base de données, sinon vous obtiendrez une erreur comme celle affichée dans la capture d'écran suivante.

Erreur de connexion de la base de données PostgreSQL

Il est également possible de vider une base de données directement d'un serveur à un autre, utilisez le pg_dump et PSQL utilitaires comme indiqué.

$ pg_dump -u tecmint -h 10.dix.20.10 Tecmintdb | pqsl -u tecmint -h 10.dix.20.30 Tecmintdb 

Base de données Auto Backup PostgreSQL à l'aide d'un travail Cron

Vous pouvez effectuer des sauvegardes à intervalles réguliers en utilisant cron emplois. Cron Les travaux sont un moyen couramment utilisé pour planifier divers types de tâches à exécuter sur un serveur.

Vous pouvez configurer un travail cron pour automatiser Postgresql Sauvegarde de la base de données comme suit. Notez que vous devez exécuter les commandes suivantes en tant que SuperUser PostgreSQL:

$ mkdir -p / srv / sauvegardes / bases de données 

Ensuite, exécutez la commande suivante pour modifier le crontab pour ajouter un nouveau travail cron.

$ crontab -e 

Copiez et collez la ligne suivante à la fin du crontab. Vous pouvez utiliser l'un des formats de vidage expliqués ci-dessus.

0 0 * * * pg_dump -u postgres tecmintdb> / srv / backups / postgres / tecmintdb.SQL 

Enregistrer le fichier et quitter.

Le service Cron commencera automatiquement à exécuter ce nouveau travail sans redémarrage. Et ce travail cron fonctionnera tous les jours à minuit, c'est une solution minimale à la tâche de sauvegarde.

Pour plus d'informations sur la façon de planifier Cron Jobs, voir: Comment créer et gérer les travaux Cron sur Linux

C'est tout pour le moment! C'est une bonne idée de faire en sorte que les données de sauvegarde une partie de votre routine de gestion de la base de données. Pour nous joindre pour toute question ou commentaire, utilisez le formulaire de rétroaction ci-dessous. Pour plus d'informations, consultez les pages de référence PG_Dump et PG_RESTORE.