Author: digoal
阿里云RDS PG 11 云盘版开放相同vpc的实例间的dblink, postgres_fdw功能。相同vpc内如果有自建的pg实例,也可以被访问,如果要访问vpc外部的其他实例,通过相同vpc内ecs的端口跳转也能实现。
阿里云RDS PG 11 云盘版购买入口:
支持距离
rds pg 11 (postgres_fdw , dblink) 可以访问如下:
1、same vpc ecs/rds pg
2、same vpc ecs(端口转发) -> other vpc/network pg
3、same vpc ecs(自建pg+oracle_fdw,mysql_fdw) -> other vpc\/network oracle|mysql
rds pg 11 (将支持oracle_fdw, mysql_fdw) 可以访问如下:
1、same vpc ecs(oracle, mysql)\/rds mysql
2、same vpc ecs(端口转发) -> other vpc\/network mysql|oracle
通过同vpc内ecs的端口转发功能,可以访问ecs可以访问的任意目标。(只要ecs能访问的,rds pg就可以通过这个端口代理去访问)
端口转发见本文参考部分。
postgres=> select dblink_connect('a', 'host=同一vpc下的另一rds的内网域名 port=同一vpc下的另一rds的内网监听端口 user=远程数据库用户名 password=密码 dbname=库名');  
 dblink_connect   
----------------  
 OK  
(1 row)  
  
postgres=> select version();  
     version       
-----------------  
 PostgreSQL 11.5  
(1 row)  
  
postgres=> SELECT * FROM dblink('a', 'SELECT version()') as t(ver text);  
       ver          
------------------  
 PostgreSQL 10.10  
(1 row)  
新建一个数据库
postgres=> create database db1;  
CREATE DATABASE  
  
postgres=> \c db1  
新建postgres_fdw插件
db1=> create extension postgres_fdw;  
CREATE EXTENSION  
新建远程数据库server
db1=> CREATE SERVER foreign_server                                                              
        FOREIGN DATA WRAPPER postgres_fdw  
        OPTIONS (host '同一vpc下的另一rds的内网域名 port=同一vpc下的另一rds的内网监听端口', port '同一vpc下的另一rds的内网监听端口', dbname '库名');  
CREATE SERVER  
  
db1=> CREATE USER MAPPING FOR digoal      
        SERVER foreign_server  
        OPTIONS (user '远程数据库用户', password '密码');  
CREATE USER MAPPING  
导入外部表
db1=> import foreign schema public from server foreign_server into ft;  
IMPORT FOREIGN SCHEMA  
  
db1=> \det ft.*  
            List of foreign tables  
 Schema |       Table        |     Server       
--------+--------------------+----------------  
 ft     | customer1          | foreign_server  
 ft     | district1          | foreign_server  
 ft     | ha_health_check    | foreign_server  
 ft     | history1           | foreign_server  
 ft     | item1              | foreign_server  
 ft     | new_orders1        | foreign_server  
 ft     | order_line1        | foreign_server  
 ft     | orders1            | foreign_server  
 ft     | pg_stat_statements | foreign_server  
 ft     | stock1             | foreign_server  
 ft     | warehouse1         | foreign_server  
(11 rows)  
https://www.postgresql.org/docs/12/postgres-fdw.html