概述
FDW是Foreign Data Wrapper的一个简称,可以叫做外部封装数据。postgres_fdw实现的是各个PostgreSQL数据库及远程数据库之间的跨库操作,同时支持与其他数据库进行外表查询。如使用oracle_fdw可与Oracle数据库进行数据访问,本文介绍Postgres-FDW部署及配置实现两个PostgreSQL数据库之间进行数据访问。

拓扑结构
服务器配置:
| 主机 | IP | 端口 |
|---|---|---|
| Pg1 | 192.168.18.11 | 15432 |
| Pg2 | 192.168.18.12 | 15432 |
数据库配置:
- 配置Pg2
(1) 创建数据库账号pg_fw2
psql -h Pg2 -p 15432 -d postgres
CREATE ROLE pg_fw2 WITH LOGIN PASSWORD ‘pg_fw2’;
GRANT ALL PRIVILEGES ON DATABASE postgres TO pg_fw2;
(2) 建立两个表:t1,t2
psql -h Pg2 -p 15432 -d postgres -U pg_fw2
CREATE TABLE t1 (id int, name varchar(20));
CREATE TABLE t2 (id int, name varchar(20)); - 配置Pg2:pg_hba.conf,允许Pg1使用账号pg_fw2访问Pg2,必须使用md5认证方式
host postgres pg_fw2 pg1 md5 - 在Pg1上,以pg_fw2身份,创建表:t1,t2
psql -h Pg2 -p 15432 -d postgres -U pg_fw2
CREATE TABLE t1 (id int, name varchar(20));
CREATE TABLE t2 (id int, name varchar(20)); - 配置Pg1
(1) 创建数据库账号’pg_fw1′
(2) 建立一个本地表t0,两个外表:fw_t1,fw_t2,分别指向Pg2上的t1,t2
(3) 安装postgres-fdw扩展,创建数据库账号pg_fw1
psql -h Pg1 -p 15432 -d postgres
create extension postgres_fdw;
CREATE ROLE pg_fw1 WITH LOGIN PASSWORD ‘pg_fw1’;
GRANT ALL PRIVILEGES ON DATABASE postgres TO pg_fw1;
GRANT USAGE ON FOREIGN DATA WRAPPER postgres_fdw TO pg_fw1;
(4) 创建FDW服务器、用户映射、外部表
–外表t1,t2对应关系:Pg1.fw_t1—>Pg2.t1,Pg1.fw_t2—>Pg2.t2
创建fdw服务器:
CREATE SERVER fw_pg2 FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host ‘192.168.18.12’, port ‘15432’, dbname ‘postgres’);
创建用户映射:
CREATE USER MAPPING for pg_fw1 SERVER fw_pg2 OPTIONS (user ‘pg_fw2’, password ‘pg_fw2’);
创建外部表fw_t1:
CREATE FOREIGN TABLE fw_t1 (id int, name varchar(100)) SERVER fw_pg2 OPTIONS (schema_name ‘public’, table_name ‘t1’);
创建外部表fw_t2:
CREATE FOREIGN TABLE fw_t2 (id int, name varchar(100)) SERVER fw_pg2 OPTIONS (schema_name ‘public’, table_name ‘t2’);
更多精彩干货分享
点击下方名片关注IT那活儿。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6076.html
