postgresql - soportada - psql restore
¿Restaurar un archivo de copia de seguridad postgres usando la línea de comando? (14)
Soy nuevo en postgresql, y localmente, uso pgadmin3. En el servidor remoto, sin embargo, no tengo ese lujo.
Ya creé la copia de seguridad de la base de datos y la copié, pero ¿hay alguna forma de restaurar una copia de seguridad desde la línea de comandos? Solo veo cosas relacionadas con GUI o pg_dumps, entonces, si alguien me puede decir cómo hacerlo, ¡sería fantástico!
A continuación se muestra mi versión de pg_dump
que utilizo para restaurar la base de datos:
pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup
o use psql
:
psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup
donde -h
host, -p
puerto, -u
usuario de inicio de sesión, -d
nombre de la base de datos
Como dice el enlace a continuación, 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 un nombre de usuario simplemente agregue el nombre de usuario después del comando como:
psql dbname < infile username
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
especifica el formato del archivo de copia de seguridad:
-
c
usará un formato personalizado de PostgreSQL que se comprime y da como resultado el 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)
Restaurar copia de seguridad:
pg_restore -d database_name -U username -C backup.dump
El parámetro -C
debería 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 tenga derechos para crear bases de datos) createdb db_name -O owner
pg_dump / psql
En caso de que no haya especificado el argumento -F
se usó el formato SQL de texto plano por defecto (o con -F p
). Entonces no puedes usar pg_restore
. Puede importar datos con psql
.
apoyo:
pg_dump -U username -f backup.sql database_name
restaurar:
psql -d database_name -f backup.sql
Estaba teniendo problemas de autenticación ejecutando pg_dump, así que moví mi archivo de volcado
mv database_dump /tmp
en el directorio temporal y luego se ejecutó
su -u postgres
cd /tmp
pg_restore database_dump
Si tiene un volcado de base de datos grande, tal vez desee crear otro directorio al que puedan acceder su usuario actual y el usuario de postgres y colocar el archivo de volcado de base de datos en eso.
Hay dos herramientas para mirar, dependiendo de cómo haya creado el archivo de volcado.
Su primera fuente de referencia debe ser la página man pg_dump(1)
ya que eso es lo que crea el volcado. Dice:
Los volcados pueden salir en formato de script o archivo. Los volcados de guiones son archivos de texto sin formato que contienen los comandos SQL necesarios para reconstruir la base de datos al estado en el que estaba cuando se guardó. Para restaurar desde una secuencia de comandos de este tipo, alimentarlo a psql (1). Los archivos de script se pueden usar para reconstruir la base de datos incluso en otras máquinas y otras arquitecturas; con algunas modificaciones incluso en otros productos de bases de datos SQL.
Los formatos de archivo de archivo alternativos se deben usar con pg_restore (1) para reconstruir la base de datos. Permiten a pg_restore ser selectivo sobre lo que se restaura, o incluso reordenar los elementos antes de ser restaurado. Los formatos de archivos de almacenamiento están diseñados para ser portátiles en todas las arquitecturas.
Entonces, depende de la forma en que fue desechado. Probablemente pueda resolverlo usando el excelente comando file(1)
- si menciona texto ASCII y / o SQL, debe restaurarse con psql
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
Consulte sus respectivas páginas de manual: hay bastantes opciones que afectan el funcionamiento de la restauración. Puede que tenga que limpiar sus bases de datos "en vivo" o volver a crearlas desde template0 (como se señala en un comentario) antes de restaurarlas, dependiendo de cómo se generaron los volcados.
Intenta ver si los siguientes comandos pueden ayudarte:
sudo su - yourdbuser
psql
/i yourbackupfile
La restauración de un archivo de copia de seguridad postgres depende de cómo se tomó la copia de seguridad en primer lugar.
Si usó pg_dump con -F c o -F d, necesita usar pg_restore, de lo contrario, puede usar
psql -h localhost -p 5432 -U postgres <archivo de copia de seguridad
9 formas de hacer copias de seguridad y restaurar bases de datos postgres
POSTGRESQL 9.1.12
TUGURIO:
pg_dump -U user db_name > archive_name.sql
ponga la contraseña del usuario y presione enter.
RESTAURAR:
psql -U user db_name < /directory/archive.sql
ponga la contraseña del usuario y presione enter.
Si crea una copia de seguridad usando pg_dump, puede restaurarla fácilmente de la siguiente manera:
- Abra la ventana de línea de comando
- Ir a la carpeta bin de Postgres. Por ejemplo:
cd "C:/ProgramFiles/PostgreSQL/9.5/bin"
- Ingrese el comando para restaurar su base de datos.
For example: psql.exe -U postgres -d YourDatabase -f D:/Backup/.sql
- Escriba la contraseña para su usuario de postgres
- Verifica el proceso de restauración
Vea el ejemplo siguiente, está funcionando
C: / Archivos de programa / PostgreSQL / 9.4 / bin / pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "newDatabase" --no-password --verbose
" C: / Users / Yogesh / Downloads / new Descargar / DB.backup "
1. abre el terminal.
2. respalde su base de datos con el siguiente comando
su bin de postgres - /opt/PostgreSQL/9.1/bin/
su servidor de base de datos fuente - 192.168.1.111
la ubicación y el nombre de su archivo de respaldo - /home/dinesh/db/mydb.backup
su nombre db de origen - 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. Restaure el archivo mydb.backup en el destino.
su servidor de destino - localhost
su nombre de base de datos de destino - mydatabase
crear una 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 ''localhost'' --port 5432 --username "postgres" --dbname "mydatabase" --no-password --clean "/ home / dinesh / db / mydb. apoyo"
Copia de seguridad y restauración con GZIP
Para una base de datos de mayor tamaño esto es muy bueno
apoyo
pg_dump -U user -d mydb | gzip > mydb.pgsql.gz
resore
gunzip -c mydb.pgsql.gz | psql dbname -U user
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
Reinstalar desde el respaldo
pg_restore -i -h localhost -p 5432 -U postgres -d old_db -v
"/usr/local/backup/10.70.0.61.backup"
importante para configurar -h localhost - opción
Backup: $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}