Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 还原我从远程服务器转储的postgres数据库_Postgresql_Amazon Web Services_Ssh_Psql_Restore - Fatal编程技术网

Postgresql 还原我从远程服务器转储的postgres数据库

Postgresql 还原我从远程服务器转储的postgres数据库,postgresql,amazon-web-services,ssh,psql,restore,Postgresql,Amazon Web Services,Ssh,Psql,Restore,我正在尝试使用psql转储和恢复托管在AWS堡垒上的Postgres数据库。为此,我需要打开一个SSH隧道 我这样打开隧道: ssh-v-Aadmin@bastion.my.company.name-L 15432:databasename.amazonaws.com:5432-N 然后将其转储为: pg_dump-v-h0.0.0.0-p15432-U postgres-d databasename-clean-T tablelined>~/pgdumps/databasenamedump.s

我正在尝试使用psql转储和恢复托管在AWS堡垒上的Postgres数据库。为此,我需要打开一个SSH隧道

我这样打开隧道: ssh-v-Aadmin@bastion.my.company.name-L 15432:databasename.amazonaws.com:5432-N

然后将其转储为: pg_dump-v-h0.0.0.0-p15432-U postgres-d databasename-clean-T tablelined>~/pgdumps/databasenamedump.sql

到目前为止还不错,我可以通过我的隧道。然后我关闭隧道并尝试恢复: psql-h0.0.0.0-p5432-U postgres-d databasename<~/pgdumps/databasenamedump.sql

但我得到:

psql:错误:无法连接到服务器:无法连接到服务器:连接被拒绝 服务器是否在主机0.0.0.0上运行并接受 端口5432上的TCP/IP连接

怎么样?我可能不理解转储/恢复的概念?一旦我转储了db,我只想运行它的本地实例。 我应该使用我为ssh隧道打开的端口15432进行恢复吗?我不敢尝试,因为这是一个生产数据库。我试图查看psql文档,但没有找到类似的场景

谢谢你的澄清

一旦我转储了db,我只想运行它的本地实例。我应该使用我为ssh隧道打开的端口15432进行恢复吗?我不敢尝试,因为这是一个生产数据库

你害怕是对的。这将还原回您从中转储的同一个数据库,这不是您希望发生的事情。由于您指定了-clean to pg_dump,转储后的生产更改可能会丢失

pg_restore不会创建数据库实例,它只是将数据库还原到一个已经运行的实例中。因此,您必须首先执行initdb或等效程序来创建这样一个实例,然后执行pg_ctl start或等效程序来启动它。当然,除非你已经做了这些事情,但是你收到的错误信息表明你没有,或者没有正确地做

我试图查看psql文档,但没有找到类似的场景

psql只是一个用于连接数据库的命令行客户端工具,它不是数据库软件本身,因此它的文档与您的关系不大

你可能需要退一步,从最开始的时候开始

一旦我转储了db,我只想运行它的本地实例。我应该使用我为ssh隧道打开的端口15432进行恢复吗?我不敢尝试,因为这是一个生产数据库

你害怕是对的。这将还原回您从中转储的同一个数据库,这不是您希望发生的事情。由于您指定了-clean to pg_dump,转储后的生产更改可能会丢失

pg_restore不会创建数据库实例,它只是将数据库还原到一个已经运行的实例中。因此,您必须首先执行initdb或等效程序来创建这样一个实例,然后执行pg_ctl start或等效程序来启动它。当然,除非你已经做了这些事情,但是你收到的错误信息表明你没有,或者没有正确地做

我试图查看psql文档,但没有找到类似的场景

psql只是一个用于连接数据库的命令行客户端工具,它不是数据库软件本身,因此它的文档与您的关系不大


您可能需要后退一步,从开始。

确保本地实例在本地主机上运行;检查此本地实例上的显示侦听地址和显示端口。您可以通过运行psql以OS用户postgres的身份连接到此本地实例吗?确保本地实例在本地主机上运行;检查此本地实例上的显示侦听地址和显示端口。您能否仅通过运行psql以OS用户postgres的身份连接到此本地实例?