我在 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');
然而,一个简单的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?
psql
我可以通过EC2 实例连接到这两个数据库。我直到最近才知道 RDS 不支持 postgres_fdw,但我正在运行支持的较新版本。
在创建服务器语句中,我尝试将“myinstance.xxxxxx.amazonaws.com”替换为它解析到的 IP 地址,但没有成功。
有任何想法吗?
进一步测试
我在具有相同安全组的 ec2 实例上安装了 postgres,主服务器的外部表按预期运行。
postgres_fdw 在同一 RDS 实例上的数据库之间工作。
这一切都让我认为我的 Postgres RDS 实例上来自 postgres_fdw 的传出连接一定有问题。