暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

阿里云RDS PG 10 HA版 - 使用postgres_fdw外部表插件 - 实例内跨库访问其他库的表

digoal 2019-01-25
387

作者

digoal

日期

2019-01-25

标签

PostgreSQL , postgres_fdw , 阿里云 , 内核安全限制


背景

阿里云rds pg内核安全上做了限制,只能访问当前实例的其他库,所以使用dblink, postgres_fdw时,虽然PG功能上是可以访问其他远程实例的,但是阿里云RDS PG限制了只能访问当前实例。

另一方面,当前实例是HA版本,并且是云化版本,所以IP,PORT都可能在发生迁移、切换后发生变化。因此为了能够让用户使用dblink, postgres_fdw访问本实例的其他跨库资源,内核上做了hack。port, host, hostaddr都不允许指定。

通过DBLINK创建视图也是一样的道理。

用法举例

1 创建postgres_fdw

create extension postgres_fdw;

2 创建外部server

```
drop SERVER foreign_server cascade;

CREATE SERVER foreign_server
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS ( dbname 'pgbi_hf'); -- 正常来说这里要指定host port,RDS PG 10 高可用版本,不需要指定
```

3 为当前用户匹配创建好的外部server

CREATE USER MAPPING FOR 本地数据库用户 SERVER foreign_server OPTIONS (user 'xxx', password 'xxx');

4 创建外部表

CREATE FOREIGN TABLE xxx ( c1 varchar(40), c2 varchar(200) ) SERVER foreign_server OPTIONS (schema_name 'xxx', table_name 'xxx');

5 可以将外部server上指定的schema里面的所有表,一次性映射到本地的某个指定SCHEMA里面

import foreign schema remote_schema1 from server foreign_server INTO local_schema1;

参考

《阿里云rds PG, PPAS PostgreSQL 同实例,跨库数据传输、访问(postgres_fdw 外部表)》

PostgreSQL 许愿链接

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

9.9元购买3个月阿里云RDS PostgreSQL实例

PostgreSQL 解决方案集合

德哥 / digoal's github - 公益是一辈子的事.

digoal's wechat

文章转载自digoal,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论