天天看點

阿裡雲RDS PG 10 HA版 - 使用postgres_fdw外部表插件 - 執行個體内跨庫通路其他庫的表

标簽

PostgreSQL , postgres_fdw , 阿裡雲 , 核心安全限制

https://github.com/digoal/blog/blob/master/201901/20190125_01.md#%E8%83%8C%E6%99%AF 背景

阿裡雲rds pg核心安全上做了限制,隻能通路目前執行個體的其他庫,是以使用dblink, postgres_fdw時,雖然PG功能上是可以通路其他遠端執行個體的,但是阿裡雲RDS PG限制了隻能通路目前執行個體。

另一方面,目前執行個體是HA版本,并且是雲化版本,是以IP,PORT都可能在發生遷移、切換後發生變化。是以為了能夠讓使用者使用dblink, postgres_fdw通路本執行個體的其他跨庫資源,核心上做了hack。port, host, hostaddr都不允許指定。

通過DBLINK建立視圖也是一樣的道理。

https://github.com/digoal/blog/blob/master/201901/20190125_01.md#%E7%94%A8%E6%B3%95%E4%B8%BE%E4%BE%8B 用法舉例

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;  
           

https://github.com/digoal/blog/blob/master/201901/20190125_01.md#%E5%8F%82%E8%80%83 參考

《阿裡雲rds PG, PPAS PostgreSQL 同執行個體,跨庫資料傳輸、通路(postgres_fdw 外部表)》

https://github.com/digoal/blog/blob/master/201901/20190125_01.md#%E5%85%8D%E8%B4%B9%E9%A2%86%E5%8F%96%E9%98%BF%E9%87%8C%E4%BA%91rds-postgresql%E5%AE%9E%E4%BE%8Becs%E8%99%9A%E6%8B%9F%E6%9C%BA 免費領取阿裡雲RDS PostgreSQL執行個體、ECS虛拟機

阿裡雲RDS PG 10 HA版 - 使用postgres_fdw外部表插件 - 執行個體内跨庫通路其他庫的表