使用命令行恢复postgres备份文件?

我是新来的postgresql,并在本地,我使用pgadmin3。 但是,在远程服务器上,我没有这种奢侈。

我已经创build了数据库的备份并将其复制过,但是有没有办法从命令行恢复备份? 我只看到与GUI或pg_dumps相关的东西,所以,如果有人能告诉我如何去做这件事,那太棒了!

有两种工具可以查看,具体取决于您如何创build转储文件。

您的第一个参考来源应该是手册页pg_dump(1)因为这是创build转储本身。 它说:

转储可以以脚本或档案文件格式输出。 脚本转储是纯文本文件,包含将数据库重build为保存时的状态所需的SQL命令。 要从这样的脚本中恢复,请将其提供给psql(1)。 即使在其他机器和其他架构上,也可以使用脚本文件重build数据库; 即使在其他SQL数据库产品上也有一些修改。

替代档案文件格式必须与pg_restore(1)一起使用来重build数据库。 它们允许pg_restore对恢复的内容进行select,甚至可以在恢复之前对项目进行重新sorting。 档案文件格式被devise为可跨架构移植。

所以要看它被抛弃的方式。 你也许可以使用优秀的file(1)命令 – 如果它提到ASCII文本和/或SQL,它应该用psql恢复,否则你可能应该使用pg_restore

恢复很简单:

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

要么

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

看看他们各自的手册页 – 有相当多的选项,影响如何恢复工作。 在恢复之前,您可能必须清理“实时”数据库或从template0重新创build它们(如评论中指出的那样),具体取决于生成转储的方式。

创build备份

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

从备份恢复

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

重要的是设置-h localhost – 选项

您可能需要以postgres身份login才能拥有数据库的完整权限。

 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 

开关-F指定备份文件的格式:

  • c将使用压缩后的自定义PostgreSQL格式,并产生最小的备份文件大小
  • d表示每个文件是一个表的目录
  • t为TAR存档(大于自定义格式)

恢复备份:

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

参数-C应该在导入数据之前创build数据库。 如果它不起作用,你可以总是创build数据库例如。 与命令(作为用户postgres或有权创build数据库的其他帐户) createdb db_name -O owner

pg_dump的/ PSQL

如果您没有指定参数-F默认的纯文本SQL格式(或使用-F p )。 那么你不能使用pg_restore 。 你可以用psql导入数据。

备份:

 pg_dump -U username -f backup.sql database_name 

恢复:

 psql -d database_name -f backup.sql 

POSTGRESQL 9.1.12

倾倒:

 pg_dump -U user db_name > archive_name.sql 

把用户密码,然后按回车。

恢复:

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

把用户密码,然后按回车。

以下是我用来恢复数据库的pg_dump版本

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

或使用psql:

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

其中-h localhost,-p port,-ulogin,-d数据库的名称

使用GZIP进行备份和恢复

对于更大的数据库,这是非常好的

备用

 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

 Backup: $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql} Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql} 

1.打开terminal。

2.用下面的命令备份你的数据库

你的postgres bin – /opt/PostgreSQL/9.1/bin/

你的源数据库服务器 – 192.168.1.111

你的备份文件的位置和名称 – /home/dinesh/db/mydb.backup

你的源数据库名称 – 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.将mydb.backup文件恢复到目标位置。

你的目标服务器 – localhost

您的目标数据库名称 – mydatabase

创build数据库以恢复备份。

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

恢复备份。

/opt/PostgreSQL/9.1/bin/pg_restore –host'localhost'–port 5432 –username“postgres”–dbname“mydatabase”–no-password –clean“/ home / dinesh / db / mydb。备份”

恢复postgres备份文件取决于你是如何进行备份的。

如果您将pg_dump与-F c或-F d一起使用,则需要使用pg_restore,否则您可以使用

psql -h localhost -p 5432 -U postgres <备份文件

备份和恢复postgres数据库的9种方法

如下面的链接所说,你可以使用psql命令来恢复转储文件:

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

 psql dbname < infile 

如果你需要设置用户名只需添加用户名后的命令,如:

 psql dbname < infile username 

如果使用pg_dump创build备份,则可以通过以下方式轻松进行恢复:

  1. 打开命令行窗口
  2. 转到Postgres bin文件夹。 例如: cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
  3. input命令恢复您的数据库。 For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
  4. 为你的postgres用户input密码
  5. 检查恢复过程

我有运行pg_dump的身份validation问题,所以我移动了我的转储文件

 mv database_dump /tmp 

进入临时目录然后运行

 su -u postgres cd /tmp pg_restore database_dump 

如果你有一个大的数据库转储,你可能只想创build另一个目录,你的当前用户和postgres用户可以访问数据库转储文件。

尝试查看下列命令是否可以帮助您:

 sudo su - yourdbuser psql \i yourbackupfile 

看下面的例子它的工作

C:/ Program Files / PostgreSQL / 9.4 / bin \ pg_restore.exe –host localhost –port 5432 –username“postgres”–dbname“newDatabase”–no-password –verbose

C:\ Users \ Yogesh \ Downloads \ new Download \ DB.backup