当前位置: 首页 > 知识库问答 >
问题:

postgres_fdw无法连接到Amazon RDS上的服务器

吴高洁
2023-03-14

我在RDS中有两个Postgres 9.3.5实例,都在一个安全组中,允许安全组内的所有入站流量和所有出站流量。我正在尝试设置一个数据库,以便能够通过postgres_fdw从另一个数据库中的几个表中进行选择。

我已经创建了服务器 -

create server master 
foreign data wrapper postgres_fdw 
OPTIONS (dbname 'main', 
         host 'myinstance.xxxxx.amazonaws.com');

以及必要的用户映射和外表 -

create foreign table condition_fdw (
    cond_id integer,
    cond_name text
) server master options(table_name 'condition', schema_name 'data');

然而,一个简单的< code > select count(*)from condition _ fdw 给出了我

ERROR:  could not connect to server "master"
DETAIL:  could not connect to server: Connection timed out
        Is the server running on host "myinstance.xxxxxx.amazonaws.com" (xx.xx.xx.xx) and accepting
        TCP/IP connections on port 5432?

我可以从EC2实例通过< code>psql连接到两个数据库。我知道直到最近RDS还不支持postgres_fdw,但我正在运行支持它的新版本。

在create server语句中,我尝试将"myinstance.xxxxxx.amazonaws.com"替换为它解析到的IP地址,但失败了。

有什么想法吗?

我在具有相同安全组的ec2实例上安装了postgres,主服务器的外部表的行为与预期一致。

postgres_fdw在同一RDS实例上的数据库之间工作。

这一切都让我认为在我的Postgres RDS实例上从postgres_fdw传出连接一定有问题。

共有3个答案

韩瀚
2023-03-14

我遇到了一个类似的问题,发现postgres_fdw只能在主实例和远程实例位于同一可用性区域时在EU-WEST-1 RDS区域工作,并且在9.3.5,如果跨越AZ,则无法连接。我的安全组是5432 TCP,仅入站,全部出站。

壤驷骁
2023-03-14

亚马逊似乎不允许从 RDS 实例进行传出连接,因此在此之前,无法跨 RDS 实例使用postgres_fdw进行更改。我必须运行一个 ec2 实例作为我的 postgres 服务器,以便将外表用于另一台服务器上的数据库。

http://docs . AWS . Amazon . com/Amazon rds/latest/user guide/Overview。RDSSecurityGroups.html

桓喜
2023-03-14

要让postgres_fdw在AWS RDS(使用VPC)中的两个实例之间工作,我必须:

  1. 启用custom_dns_resolution https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html#Appendix.PostgreSQL.CommonDBATasks.CustomDNS
  2. 在安全组的入方向规则中添加查询数据库的公网IP,或者将RDS实例的内部IP添加为服务器主机 https://forums.aws.amazon.com/thread.jspa?threadID=235154。

第一个文档记录得很好,但我直到碰到第二个文档才开始工作。

 类似资料:
  • 我试图连接到赛贝斯ASE版本16.0安装在linux服务器通过windows客户端。然而,我却做不到。请帮我一个支持赛贝斯ASE 16的sql编辑器。X和Windows OS.也请帮助我在客户端服务器架构中连接到数据库的步骤。 我是Sybase和数据库的新手,所以如果我问了一些太明显的问题,请原谅。 谢谢你的期待。

  • 我在localhost上有一个带有mongo数据库的Spring Boot应用程序,一切都很好。 当我运行我的应用程序时,我得到“com.mongodb.mongoSocketOpenException:Exception opening Socket”由“regused by:java.net.SocketTimeoutException:connect timed out”引起

  • 我在设置打开班次时遇到问题,并在连接到我的服务器域后收到以下错误: 我不确定这是在告诉我做什么。我尝试按字面意思使用指令,但它无法识别命令。 有什么想法吗?

  • 问题内容: 我不确定如何解决此问题 我不知道为什么在尝试以下操作时会出现此错误: 当我尝试连接到postgres时: 问题答案: 可能是一些问题: PostgreSQL没有运行。用sudo检查 你的PostgresSQl不在端口5432上运行。你可以检查其键入 尝试连接到数据库时出现错误,例如用户名,密码或数据库名。检查它们是否是postgres要求你连接的对象,并且这是你要访问的db_name。

  • 在我做了和之后,我的postgres遇到了一些问题。我试着卸载postgres并重新安装它,但它并没有那么好用。 这就是我所做的: 现在,在我重新安装homebrew之后,当我使用时,它不显示任何错误消息。 但是我在我的Rails应用程序中运行,它显示: 更新 这对我也管用。

  • 注意:连接是LAN,在隧道模式下工作正常,但速度较慢