接上一篇《PG-跨库操作-dblink》;讲下postgres_fdw的使用;postgres_fdw工作原理详细介绍可以去看下《PostgreSQL指南》第4章;

对FDW特性;还支持在PostgreSQL异构数据库的同步、迁移的场景。FDW随着Postgres版本而升级、优化,对分布式架构也是支持的。

一、新建插件postgres_fdw

安装插件postgres_fdw

lottu01=# create extension postgres_fdw;

二、新建远程数据库服务器

2.1、在本地库创建SERVER

--1 赋予lottu01对应权限
lottu01=# grant usage on foreign data wrapper postgres_fdw to lottu01;
GRANT
lottu01=# \c lottu01 lottu01
You are now connected to database "lottu01" as user "lottu01".
--2 创建server
lottu01=> CREATE SERVER lottu FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '192.168.1.221', port '6000', dbname 'lottu');
CREATE SERVER

2.2、在本地库创建user mapper

lottu01=> CREATE USER MAPPING FOR lottu01 SERVER lottu OPTIONS (user 'lottu', password 'li0924');
CREATE USER MAPPING

2.3、创建外部表

lottu01=> CREATE FOREIGN TABLE t1 (id int, info text) server lottu OPTIONS (schema_name 'public', table_name 't1');
CREATE FOREIGN TABLE
lottu01=> select * from t1;
  id  | info  
------+-------
 1001 | lottu
 1002 | hello
 1003 | rax
 1004 | rax
 1005 | lottu
(5 rows)

2.4、导入外部表

CREATE FOREIGN TABLE中声明的列数据类型和其他性质必须要匹配实际的远程表。列名也必须匹配,不过也可以为个别列附上column_name选项以表示它们在远程服务器上对应哪个列。在很多情况中,要手工构造外部表定义,使用IMPORT FOREIGN SCHEMA会更好。

lottu01=> create schema ft;
CREATE SCHEMA
lottu01=> IMPORT FOREIGN SCHEMA public FROM SERVER lottu INTO ft;
IMPORT FOREIGN SCHEMA

三、扩展

3.1、相关系统表

通过下列系统表可以查看数据库外部表信息。

系统表 简命令操作 含义
pg_extension \dx 插件
pg_foreign_data_wrapper \dew 支持外部数据库接口
pg_foreign_server \des 外部服务器
pg_user_mappings \deu 用户管理
pg_foreign_table \det 外部表

3.2、使用优化

减少对远端服务器的连接影响;可以使用物化视图;

--1、在本地数据库创建物化视图
create materialized view mv_t1 as select * from t1;
--2、 刷新一下本地的物化视图即可看到新进来的数据:
refresh materialized view mv_t1

四、应用场景

4.1、数据同步

本地创建外部表;可对外部表支持执行delete、update、insert语句;同时远程数据库的表也会执行相对应的操作。例如两个数据库实现token的一致。

4.2、数据迁移

在导入外部表;可以实现数据迁移。

4.3、分布式架构使用

citus的实现原理是采用FDW特性。安装很简单;但维护注意点比较多;想要更多了解可以找陈华军老师。

最新文章

  1. python string intern
  2. 菜鸟学Linux命令:nohup命令启动程序
  3. uva 297 quadtrees——yhx
  4. Git基础 - git blame
  5. Using unique option prefix myisam-recover instead of myisam-recover-option
  6. dom 学习的开始~简单留言1
  7. linux服务器修改ftp默认21端口方法
  8. Xcode7主题路径
  9. MongoDB与传统数据库的使用区别——批量插入与批量查询
  10. Python学习笔记——基础篇2【第三周】——计数器、有序字典、元组、单(双)向队列、深浅拷贝、函数、装饰器
  11. 鼠标相关操作(Cursor类及相关API)
  12. 01-java技术体系基础
  13. ORALCE EBS ALERT 初体验
  14. Oracle 内连接和外连接
  15. Flask 模型操作
  16. shell基础:预定义变量
  17. xbox360 双65厚机自制系统无硬盘 U盘玩游戏方法
  18. ★ phpStudy安装SSL证书实现https链接
  19. 【codeforces】【比赛题解】#869 CF Round #439 (Div.2)
  20. python-arcade时钟

热门文章

  1. MySQL · 性能优化 · MySQL常见SQL错误用法(转自-阿里云云栖社区)
  2. Jmeter 常用函数(9)- 详解 __UUID
  3. 10款人气暴涨的PHP开源工具
  4. 网络测速神器:SpeedTest深度指南
  5. idea vue文件设置tab为四个空格
  6. MySql密码的问题
  7. 用LR录制终于可以在我的电脑上顺利弹出IE了
  8. unity shader
  9. 手机预览本地html
  10. 08_线程间通信 ITC