У меня есть два экземпляра Postgres 9.3.5 в RDS, оба в одной группе безопасности, которая разрешает весь входящий трафик из группы безопасности и весь исходящий трафик. Я пытаюсь настроить одну базу данных, чтобы иметь возможность выбирать из нескольких таблиц из другой через 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-адрес, который он разрешает, но безуспешно.
Любые идеи?
Дальнейшее тестирование
Я установил postgres на экземпляр ec2 с той же группой безопасности, сторонние таблицы для главного сервера ведут себя так, как ожидалось.
postgres_fdw между базами данных на одном экземпляре RDS работает.
Все это наводит меня на мысль, что это проблема с исходящими соединениями от postgres_fdw в моем экземпляре Postgres RDS.
host 'localhost'
в параметрах команды создания сервера. Если вы используетеhost 'myinstance.xxxxxxx.amazonaws.com
, у вас будет тайм-аут, как вы описали. Странно, что редактирование правил входящих подключений помогло, так как исходящие подключения из RDS запрещены независимо от правил группы безопасности. - person pail   schedule 28.02.2015