Je suis nouveau sur postgresql, et localement, j'utilise pgadmin3. Sur le serveur distant, cependant, je n'ai pas ce luxe.
J'ai déjà créé et copié la sauvegarde de la base de données, mais existe-t-il un moyen de restaurer une sauvegarde à partir de la ligne de commande? Je ne vois que des choses liées à l'interface graphique ou à pg_dumps, donc si quelqu'un peut me dire comment s'y prendre, ce serait génial!
Il existe deux outils à examiner, selon la manière dont vous avez créé le fichier de vidage.
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 vidage lui-même. Ça dit:
Les vidages peuvent être générés en script ou en formats de fichiers d'archives. Les dumps de script sont Fichiers en texte brut contenant le code SQL commandes nécessaires pour reconstruire la base de données à l'état où il était au moment où il a été enregistré. À restaurer à partir d'un tel script, alimentez-le psql (1). Les fichiers de script peuvent être utilisés pour reconstruire la base même sur d'autres machines et autres des architectures; avec quelques modifications même sur d'autres produits de base de données SQL.
Les formats de fichiers d'archives alternatifs doit être utilisé avec pg_restore (1) à reconstruire la base de données. Elles permettent pg_restore être sélectif sur quoi est restauré, ou même de réorganiser le éléments avant d'être restauré. Le Les formats de fichiers d’archive sont conçus pour être portable à travers les architectures.
Cela dépend donc de la façon dont il a été déversé. Vous pouvez probablement le comprendre en utilisant l'excellente commande file(1)
- si elle mentionne du texte et/ou du code SQL ASCII, il devrait être restauré avec psql
sinon vous devriez probablement utiliser pg_restore
La restauration est assez facile:
psql -U <username> -d <dbname> -1 -f <filename>.sql
ou
pg_restore -U <username> -d <dbname> -1 <filename>.dump
Consultez leurs pages de manuel respectives. Plusieurs options affectent le fonctionnement de la restauration. Vous devrez peut-être nettoyer vos bases de données "actives" ou les recréer à partir de template0 (comme indiqué dans un commentaire) avant de restaurer, en fonction de la manière dont les sauvegardes ont été générées.
créer une sauvegarde
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f
"/usr/local/backup/10.70.0.61.backup" old_db
-F c est un format personnalisé (compressé, et capable de le faire en parallèle avec -j N) -b inclut des blobs, -v est détaillé, -f est le nom du fichier de sauvegarde
Restore depuis une sauvergarde
pg_restore -h localhost -p 5432 -U postgres -d old_db -v
"/usr/local/backup/10.70.0.61.backup"
important de définir -h localhost - option
Vous devrez peut-être être connecté en tant que postgres
pour disposer de tous les 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écifiez le format du fichier de sauvegarde:
c
utilisera le format PostgreSQL personnalisé, qui est compressé et donne une taille de fichier de sauvegarde minimale.d
pour le répertoire où chaque fichier est une tablet
pour l'archive TAR (plus grand que le format personnalisé)-h
/--Host
Spécifie le nom d'hôte de la machine sur laquelle le serveur est en cours d'exécution.-W
/--password
Forcer pg_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
devrait créer la 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 commande (en tant qu'utilisateur postgres
ou autre compte ayant le droit de créer des bases de données) createdb db_name -O owner
pg_dump/psql
Si vous n'avez pas spécifié l'argument -F
, le texte SQL par défaut a été utilisé (ou avec -F p
). Ensuite, vous ne pouvez pas utiliser pg_restore
. Vous pouvez importer des données avec psql
.
sauvegarde:
pg_dump -U username -f backup.sql database_name
restaurer:
psql -d database_name -f backup.sql
POSTGRESQL 9.1.12
DÉVERSER:
pg_dump -U user db_name > archive_name.sql
mettez le mot de passe de l'utilisateur et appuyez sur entrée.
RESTAURER:
psql -U user db_name < /directory/archive.sql
mettez le mot de passe de l'utilisateur et appuyez sur entrée.
Ci-dessous, 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 utilisez psql
:
psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup
où -h
hôte, -p
port, -u
nom d'utilisateur de connexion, -d
nom de la base de données
Sauvegarder et restaurer avec GZIP
Pour les bases de données de grande taille, c'est très bien
sauvegarde
pg_dump -U user -d mydb | gzip > mydb.pgsql.gz
résumer
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.backup votre base de données avec la commande suivante
votre 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.backup
votre nom de base de données source - mydatabase
/opt/PostgreSQL/9.1/bin/pg_dump --Host '192.168.1.111' --port 5432 --username "postgres" --no-password --format custom --blobs --file "/ home/dinesh/db /mydb.backup "" mydatabase "
3.restorez le fichier mydb.backup dans la destination.
votre serveur de destination - localhost
votre nom de base de données de destination - mydatabase
create database 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 --username "postgres" --domname "mydatabase" --no-password - nettoyage "/ home/dinesh/db/mydb. sauvegarde "
Comme indiqué ci-dessous, vous pouvez utiliser la commande psql pour restaurer le fichier de vidage:
https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE
psql dbname < infile
si vous devez définir un nom d'utilisateur, ajoutez-le après la commande, comme suit:
psql dbname < infile username
Essayez de voir si les commandes suivantes peuvent vous aider:
Sudo su - yourdbuser
psql
\i yourbackupfile
Si vous créez une sauvegarde en utilisant pg_dump, vous pouvez facilement la restaurer de la manière suivante:
cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
Si vous avez un fichier de sauvegarde SQL, vous pouvez facilement le restaurer. Il suffit de suivre les instructions données ci-dessous
1. At first, create a database using pgAdmin or whatever you want (for example my_db is our created db name)
2. Now Open command line window
3. Go to Postgres bin folder. For example: cd "C:\ProgramFiles\PostgreSQL\pg10\bin"
4. Enter the following command to restore your database: psql.exe -U postgres -d my_db -f D:\Backup\backup_file_name.sql
Tapez le mot de passe de votre utilisateur postgres si nécessaire et laissez Postgres faire son travail. Ensuite, vous pouvez vérifier le processus de restauration.
La restauration d’un fichier de sauvegarde Postgres dépend de la manière dont vous avez effectué la sauvegarde.
Si vous avez utilisé pg_dump avec -F c ou -F d, vous devez utiliser pg_restore, sinon vous pouvez simplement utiliser
psql -h localhost -p 5432 -U postgres <fichier de sauvegarde
9 façons de sauvegarder et de restaurer des bases de données postgres
1) Ouvrez le terminal psql.
2) Décompressez/décompressez le fichier de vidage.
3) Créez une base de données vide.
4) utilisez la commande suivante pour restaurer le fichier .dump
<database_name>-# \i <path_to_.dump_file>
Cela a fonctionné pour moi:
pg_restore --verbose --clean --no-acl --no-owner --Host = localhost -dbname = db_name --username = nom d'utilisateur latest.dump
essayer:
pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
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, accédez à votre répertoire postgres\bin\tel que C:\programfiles\postgres\10\bin\
, puis tapez 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 à partir d'une sauvegarde, accédez à votre répertoire postgres\bin\tel que C:\programfiles\postgres\10\bin\
, puis tapez la commande ci-dessous - C:\programFiles\postgres\10\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup
Veuillez vous assurer que le fichier de sauvegarde existe.
J'avais des problèmes d'authentification avec pg_dump, alors j'ai déplacé mon fichier de vidage
mv database_dump /tmp
dans le répertoire temporaire puis a couru
su -u postgres
cd /tmp
pg_restore database_dump
Si vous avez un dump de base de données volumineux, vous souhaiterez peut-être simplement créer un autre répertoire dans lequel votre utilisateur actuel et l'utilisateur postgres pourront accéder et y placer le fichier de dump de la base de données.
essaye ça:
psql -U <username> -d <dbname> -f <filename>.sql
Restaurer la base de données psql à partir d'un fichier .sql