Restaurer un fichier de sauvegarde postgres en utilisant la ligne de commande?
je suis nouveau à postgresql, et localement, j'utilise pgadmin3. Sur le serveur distant, cependant, je n'ai pas un tel luxe.
j'ai déjà créé la sauvegarde de la base de données et copiée sur, mais, est-il un moyen de restaurer une sauvegarde à partir de la ligne de commande? Je ne vois que des choses liées à GUI ou à pg_dumps, donc, si quelqu'un peut me dire comment faire, ce serait génial!
15 réponses
il y a deux outils à regarder, selon la façon dont vous avez créé le fichier dump.
votre première source de référence devrait être la page de manuel pg_dump(1)
car c'est ce qui crée le dump lui-même. Il dit:
Dumps peut être sortie en script ou formats des fichiers d'archives. Script dumps are fichiers texte contenant le code SQL commandes nécessaires pour reconstruire la base de données à l'état il était au moment où il a été enregistrer. De restaurer à partir d'un tel script, l'alimenter à psql (1). Les fichiers de Script peuvent être utilisés pour reconstruire la base de données même sur d'autres machines et d'autres architectures; avec quelques modifications même sur D'autres produits de base de données SQL.
L'alternative formats de fichiers d'archive doit être utilisé avec pg_restore(1) reconstruire la base de données. Ils permettent pg_restore doit être sélectif est restauré, ou même pour réorganiser les les articles avant de les restaurer. Le les formats de fichiers d'archives sont conçus pour être portable à travers les architectures.
dépend donc de la façon dont il a été jeté. Vous pouvez probablement le comprendre en utilisant l'excellente commande file(1)
- s'il mentionne le texte ASCII et/ou SQL, il devrait être restauré avec psql
sinon vous devriez probablement utiliser pg_restore
restaurer est assez facile:
psql -U <username> -d <dbname> -1 -f <filename>.sql
ou
pg_restore -U <username> -d <dbname> -1 <filename>.dump
vérifiez leurs pages de manuel respectives - il y a pas mal d'options qui affectent le fonctionnement de la restauration. Vous devrez peut-être nettoyer vos bases de données "live" ou les recréer à partir du template0 (comme indiqué dans un commentaire) avant de les restaurer, selon la façon dont les dumps ont été générés.
créer une sauvegarde
pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f
"/usr/local/backup/10.70.0.61.backup" old_db
restaurer depuis une sauvegarde
pg_restore -i -h localhost -p 5432 -U postgres -d old_db -v
"/usr/local/backup/10.70.0.61.backup"
important pour définir - h localhost - option
Vous pourriez avoir besoin d'être connecté en tant que postgres
afin d'avoir des privilèges sur les bases de données.
su - postgres
psql -l # will list all databases on Postgres cluster
pg_dump/pg_restore
pg_dump -U username -f backup.dump database_name -Fc
switch -F
spécifier le format de fichier de sauvegarde:
-
c
utilisera le format personnalisé PostgreSQL qui est comprimé et donne la plus petite taille de fichier de sauvegarde -
d
pour répertoire où chaque fichier est une table -
t
pour archive TAR (plus grand que format personnalisé) -
-h
/--host
spécifie le nom d'hôte de la machine sur laquelle le serveur tourne -
-W
/--password
forcerpg_dump
à demander un mot de passe avant de se connecter à une base de données
restaurer la sauvegarde:
pg_restore -d database_name -U username -C backup.dump
Le paramètre -C
doit créer une base de données avant d'importer des données. Si cela ne fonctionne pas, vous pouvez toujours créer une base de données par exemple. avec la commande (comme utilisateur postgres
ou autre compte qui a le droit de créer des bases de données) createdb db_name -O owner
pg_dump/psql
dans le cas où vous n'avez pas spécifié l'argument -F
le format de SQL de texte simple par défaut a été utilisé (ou avec -F p
). Alors vous ne pouvez pas utiliser pg_restore
. Vous pouvez importer des données avec psql
.
de sauvegarde:
pg_dump -U username -f backup.sql database_name
"1519220920 de restauration":
psql -d database_name -f backup.sql
POSTGRESQL 9.1.12
DUMP:
pg_dump -U user db_name > archive_name.sql
mettez le mot de passe de l'utilisateur et appuyez sur Entrée.
RESTORE:
psql -U user db_name < /directory/archive.sql
mettez le mot de passe de l'utilisateur et appuyez sur Entrée.
ci-dessous est ma version de pg_dump
que j'utilise pour restaurer la base de données:
pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup
ou utiliser psql
:
psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup
où -h
armée, -p
port", 151960920" login nom d'utilisateur, -d
nom de la base de données
de Sauvegarde et de restauration avec GZIP
pour une base de données plus grande c'est très bon
sauvegarde
pg_dump -U user -d mydb | gzip > mydb.pgsql.gz
resore
gunzip -c mydb.pgsql.gz | psql dbname -U user
Backup: $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}
1.ouvrez le terminal.
2.sauvegardez votre base de données avec la commande suivante
your postgres bin - / opt/PostgreSQL / 9.1/bin /
votre serveur de base de données source-192.168.1.111
l'emplacement et le nom de votre fichier de sauvegarde - /home/dinesh/db/mydb.de sauvegarde
votre base de données source nom - mabase
/opt/PostgreSQL/9.1/bin/pg_dump --host '192.168.1.111' --port 5432 --nom d'utilisateur "postgres" --no-password --format custom --blobs --file "/home/dinesh/db / mydb.de sauvegarde" "mabase"
3.restaurer mydb.fichier de sauvegarde dans la destination.
votre serveur de destination-localhost
votre nom de base de données de destination-mydatabase
créer une base de données pour restaurer la sauvegarde.
/ opt / PostgreSQL / 9.1/bin/psql -h 'localhost' - p 5432-U postgres-c "CREATE DATABASE mydatabase "
restaurer la sauvegarde.
/opt/PostgreSQL/9.1/bin/pg_restore --host = 'localhost' --port 5432 --nom d'utilisateur "postgres" --dbname "mabase" --no-mot de passe --clean "/home/dinesh/db/mydb.de sauvegarde"
comme le dit le lien ci-dessous, vous pouvez utiliser la commande psql pour restaurer le fichier dump:
https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE
psql dbname < infile
si vous avez besoin de définir l'utilisateur il suffit d'ajouter le nom d'utilisateur après la commande comme:
psql dbname < infile username
si vous créez une sauvegarde en utilisant pg_dump, vous pouvez facilement la restaurer de la manière suivante:
- Ouvrir la fenêtre de ligne de commande
- allez dans le dossier bin de Postgres. Par exemple:
cd "C:\ProgramFiles\PostgreSQL.5\bin"
- Entrez la commande pour restaurer votre base de données.
For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
- Tapez mot de passe pour votre utilisateur postgres
- Vérifier le processus de restauration
Essayer de voir si les commandes suivantes peuvent vous aider:
sudo su - yourdbuser
psql
\i yourbackupfile
restaurer un fichier de sauvegarde postgres dépend de la façon dont vous avez pris la sauvegarde en premier lieu.
si vous avez utilisé pg_dump avec-F C ou-F d vous devez utiliser pg_restore sinon vous pouvez juste utiliser
psql-h localhost-p 5432-U postgres < backupfile
9 façons de sauvegarder et de restaurer les bases de données postgres
j'avais des problèmes d'authentification avec pg_dump, donc j'ai déplacé mon fichier dump
mv database_dump /tmp
dans le répertoire temp et a ensuite couru
su -u postgres
cd /tmp
pg_restore database_dump
si vous avez un gros dump de base de données, vous pouvez juste vouloir créer un autre répertoire où votre Utilisateur courant et l'utilisateur postgres peuvent accéder et mettre le fichier dump de base de données dans ce.
si vous souhaitez sauvegarder vos données ou restaurer des données à partir d'une sauvegarde, vous pouvez exécuter les commandes suivantes:
1 pour créer une sauvegarde de vos données, allez dans votre répertoire postgres \bin \ comme C:\programfiles\postgres\bin\
et tapez ensuite la commande suivante -
pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb.090718_after_readUpload.backup
2 pour restaurer les données d'une sauvegarde, allez dans votre répertoire postgres \bin comme C:\programfiles\postgres\bin\
et tapez ensuite la commande - C:\programFiles\postgres\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup
s'il vous Plaît assurez-vous que le sauvegarde le fichier existe.
voir ci-dessous exemple son fonctionnement
C:/Program Files/PostgreSQL/9.4 / bin\pg_restore.exe -- host localhost --port 5432 --nom d'utilisateur "postgres" -- dbname "newDatabase" --no-password --verbose
C:\Users\Yogesh\Downloads\new Download\DB.de sauvegarde "