Restaurar un archivo de copia de seguridad de postgres usando la línea de comandos?


Soy nuevo en postgresql, y localmente, uso pgadmin3. En el servidor remoto, sin embargo, no tengo tal lujo.

Ya he creado la copia de seguridad de la base de datos y la he copiado, pero, ¿hay alguna manera de restaurar una copia de seguridad desde la línea de comandos? Solo veo cosas relacionadas con GUI o con pg_dumps, así que, si alguien puede decirme cómo hacer esto, ¡sería genial!

Author: Hardik Mishra, 2010-04-28

15 answers

Hay dos herramientas para mirar, dependiendo de cómo creó el archivo de volcado.

Su primera fuente de referencia debería ser la página de manual pg_dump(1) ya que eso es lo que crea el volcado en sí. Dice:

Los volcados se pueden generar en script o formatos de archivo. Los volcados de script son archivos de texto sin formato que contienen el SQL comandos necesarios para reconstruir la base de datos al estado en que se encontraba en el momento en que se salvó. A restaurar desde un script de este tipo, alimentarlo a psql(1). Se pueden utilizar archivos de script para reconstruir la base de datos incluso en otras máquinas y otros arquitecturas; con algunas modificaciones incluso en otros productos de base de datos SQL.

Los formatos de archivo alternativos debe usarse con pg_restore (1) para reconstruir la base de datos. Permiten pg_restore para ser selectivo sobre lo que se restablece, o incluso para reordenar el elementos antes de ser restaurados. El los formatos de archivo están diseñados para ser portátil a través arquitectura.

Así que depende de la forma en que se desechó. Probablemente pueda averiguarlo usando el excelente comando file(1) - si menciona texto ASCII y / o SQL, debería restaurarse con psql de lo contrario probablemente debería usar pg_restore

Restaurar es bastante fácil:

psql -U <username> -d <dbname> -1 -f <filename>.sql

O

pg_restore -U <username> -d <dbname> -1 <filename>.dump

Echa un vistazo a sus respectivas páginas de manual - hay bastantes opciones que afectan a cómo funciona la restauración. Es posible que tenga que limpiar sus bases de datos "en vivo" o recrearlas de template0 (como se señala en un comentario) antes de restaurar, dependiendo de cómo se generaron los volcados.

 181
Author: Steven Schlansker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-25 16:17:08

Crear copia de seguridad

pg_dump -i -h localhost -p 5432 -U postgres -F c -b -v -f 
"/usr/local/backup/10.70.0.61.backup" old_db

Restaurar desde copia de seguridad

pg_restore -i -h localhost -p 5432 -U postgres -d old_db -v 
"/usr/local/backup/10.70.0.61.backup"

es importante establecer - h localhost - option

 114
Author: pilot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-28 08:55:25

Es posible que deba iniciar sesión como postgres para tener privilegios completos en las bases de datos.

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 especifique el formato del archivo de copia de seguridad:

  • c utilizará el formato PostgreSQL personalizado que se comprime y da como resultado un tamaño de archivo de copia de seguridad más pequeño
  • d para el directorio donde cada archivo es una tabla
  • t para el archivo TAR (más grande que el formato personalizado)
  • -h/--host Especifica el nombre de host de la máquina en la que se ejecuta el servidor
  • -W/--password Forzar pg_dump a solicitar una contraseña antes de conectarse a una base de datos

Restaurar copia de seguridad:

   pg_restore -d database_name -U username -C backup.dump

El parámetro -C debe crear una base de datos antes de importar datos. Si no funciona, siempre puede crear una base de datos, por ejemplo. con comando (como usuario postgres u otra cuenta que tiene derechos para crear bases de datos) createdb db_name -O owner

Pg_dump / psql

En caso de que no especificara se utilizó el argumento -F formato SQL de texto plano predeterminado (o con -F p). Entonces no puedes usar pg_restore. Puede importar datos con psql.

Copia de seguridad:

pg_dump -U username -f backup.sql database_name

Restaurar:

psql -d database_name -f backup.sql
 51
Author: Tombart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-20 07:42:43

POSTGRESQL 9.1.12

VOLCADO:

pg_dump -U user db_name > archive_name.sql

Ponga la contraseña de usuario y pulse intro.

RESTAURAR:

psql -U user db_name < /directory/archive.sql

Ponga la contraseña de usuario y pulse intro.

 35
Author: Natan Medeiros,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-01 06:07:42

A continuación está mi versión de pg_dump que uso para restaurar la base de datos:

pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup

O utilizar psql:

psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup

Donde -h host, -p port, -u login username, -d nombre de la base de datos

 22
Author: Yahor M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-09 14:26:16

Copia de seguridad y restauración con GZIP

Para una base de datos de mayor tamaño esto es muy bueno

Copia de seguridad

pg_dump -U user -d mydb | gzip > mydb.pgsql.gz

Resore

gunzip -c mydb.pgsql.gz | psql dbname -U user

Https://www.postgresql.org/docs/9.1/static/backup-dump.html

 7
Author: Sarath Ak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-14 07:13:14
Backup:  $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}

Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}
 6
Author: Aaron Lelevier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-30 16:15:27

1.abre la terminal.

2.copia de seguridad de su base de datos con el siguiente comando

Su bin postgres - /opt/PostgreSQL/9.1/bin /

Su servidor de base de datos de origen-192.168.1.111

La ubicación y el nombre del archivo de copia de seguridad - /home/dinesh/db/mydb.copia de seguridad

El nombre de la base de datos de origen-mydatabase

/opt/PostgreSQL/9.1/bin/pg_dump --host '192.168.1.111' --puerto 5432 --nombre de usuario "postgres" --no-contraseña-formato personalizado --blobs --archivo "/home / dinesh / db / mydb.copia de seguridad" "mydatabase"

3.restaurar mydb.copia de seguridad del archivo en destino.

Su servidor de destino-localhost

Su nombre de base de datos de destino-mydatabase

Crear base de datos para restaurar la copia de seguridad.

/opt/PostgreSQL/9.1/bin / psql-h 'localhost' -p 5432-U postgres-c"CREATE DATABASE mydatabase"

Restaurar la copia de seguridad.

/ opt / PostgreSQL / 9.1 / bin / pg_restore host host ' localhost 'port port 5432 -- username " postgres "db dbname" mydatabase "no no-password clean clean" /home/dinesh/db/mydb.copia de seguridad"

 5
Author: Dinesh-SriLanka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-11 06:09:53

Como se dice en el siguiente enlace, puede usar el comando psql para restaurar el archivo de volcado:

Https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE

psql dbname < infile

Si necesita establecer el nombre de usuario, simplemente agregue el nombre de usuario después del comando como:

psql dbname < infile username
 2
Author: Maryam Saeidi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-06 08:46:23

Si crea una copia de seguridad usando pg_dump, puede restaurarla fácilmente de la siguiente manera:

  1. Abrir la ventana de línea de comandos
  2. Vaya a la carpeta bin Postgres. Por ejemplo: cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
  3. Introduzca el comando para restaurar su base de datos. For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
  4. Escriba la contraseña para su usuario de postgres
  5. Compruebe el proceso de restauración
 2
Author: Nick Taylor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-30 10:46:18

Intenta ver si los siguientes comandos pueden ayudarte:

sudo su - yourdbuser
psql
\i yourbackupfile
 2
Author: Mehmet Ali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-09 15:54:53

Restaurar un archivo de copia de seguridad de postgres depende de cómo tomó la copia de seguridad en primer lugar.

Si has usado pg_dump con -F c o-F d necesitas usar pg_restore de lo contrario solo puedes usar

Psql-h localhost - p 5432-U postgres

9 formas de respaldar y restaurar bases de datos postgres

 1
Author: Prashant Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-14 17:22:29

Estaba teniendo problemas de autenticación al ejecutar pg_dump, así que moví mi archivo de volcado

mv database_dump /tmp

En el directorio temp y luego corrió

su -u postgres
cd /tmp
pg_restore database_dump

Si tiene un volcado de base de datos grande, es posible que desee crear otro directorio donde su usuario actual y el usuario de postgres puedan acceder y poner el archivo de volcado de base de datos en ese.

 0
Author: user1876508,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-19 03:04:47

Si desea hacer una copia de seguridad de sus datos o restaurar datos desde una copia de seguridad, puede ejecutar los siguientes comandos:

1 Para crear una copia de seguridad de sus datos, vaya a su directorio postgres\ bin \ como C:\programfiles\postgres\10\bin\ y luego escriba el siguiente comando - pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb.090718_after_readUpload.backup

2 Para restaurar los datos de una copia de seguridad, vaya a su directorio postgres \bin\ como C:\programfiles\postgres\10\bin\ y luego escriba debajo comando - C:\programFiles\postgres\10\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup

Por favor, asegúrese de que el archivo de copia de seguridad existe.

 0
Author: Girjesh Kumar Suryawanshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-17 10:46:30

Ver a continuación el ejemplo de su trabajo

C:/Program Files / PostgreSQL / 9.4 / bin\pg_restore.exe --host localhost --puerto 5432 --nombre de usuario "postgres" --dbname "newDatabase" --no-contraseña --verbose

"C:\Users\Yogesh\Downloads\new Descargar \ DB.copia de seguridad "

 -3
Author: user3881346,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-23 06:35:27