使用命令行恢复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
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备份,则可以通过以下方式轻松进行恢复:
- 打开命令行窗口
- 转到Postgres bin文件夹。 例如:
cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
- input命令恢复您的数据库。
For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
- 为你的postgres用户input密码
- 检查恢复过程
我有运行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 ”