INT 21h

Hi, I am Vladimir Smagin, SysAdmin and Kaptain. Telegram Email / GIT / RSS / GPG

Удаленные таблицы через Foreign Data Wrapper

№ 10366 В разделе Sysadmin от October 11th, 2019,
В подшивках:

Никогда этим не занимался и вот опять.

Нужно это чтобы отправлять запросы к внешним таблицам будто бы они размещены локально. Называется это FOREIGN TABLE и работает оно через Foreign Data Wrapper. Как внешние источники можно подключать не только PostgreSQL, но и другие СУБД. Мне нужен PostrgeSQL

На источнике данных создаю пользователя с правом чтения забираемой схемы:

CREATE USER vlad_remote LOGIN PASSWORD 'GesAim7bla' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
GRANT ro_group TO vlad_remote;

После этого на источнике данных нужно добавить в pg_hba запись, разрешающую подключение с целевого сервера. Больше никаких правок там делать не требуется.

Теперь на целевом сервере нужно подгрузить fdw расширение: CREATE EXTENSION postgres_fdw;

Далее создать SERVER, указывающий на источник данных:

CREATE SERVER home_db FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'blindage.org', dbname 'zabbix');

Маппинг нужен чтобы текущий пользователь мог авторизоваться на источнике данных:

CREATE USER MAPPING FOR CURRENT_USER SERVER home_db OPTIONS (user 'vlad_remote', password 'GesAim7bla');

После этого можно либо создавать удаленные таблицы через CREATE FOREIGN TABLE, либо испортировать всю схему или часть таблиц через IMPORT FOREIGN SCHEMA.

Всю базу данных светить не нужно, если нужна только одна таблица items. Делаем новую БД и импорт только одной таблицы:

CREATE SCHEMA zabbix;
IMPORT FOREIGN SCHEMA public limit to (items) FROM SERVER home_db INTO zabbix;

Ну и проверяем:

SELECT * FROM zabbix.items LIMIT 1;

Все.

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Облачная платформа
Яндекс.Метрика

Fortune cookie: Today's spam: Impotency can easily be cured with no embarressements.