最近有同一个服务器不同数据库、不同服务器数据库之间的数据同步需求,使用了fdw
下面举例的是同一个服务器两个不同数据库的同步情况
1、安装扩展
create extension postgres_fdw;
在需要使用fdw的数据库都加上该扩展
2、创建fdw服务器
mlhbase_prd库
CREATE SERVER base_server
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host '127.0.0.1', port '5432', dbname 'mlhbase_prd');
base_server是名称,填上主机地址、端口、数据库名称
删除:drop server base_server;
3、创建用户映射(本地用户与远程用户映射)
切到mlhsale_prd库
CREATE USER MAPPING FOR mlhsale_prd
SERVER base_server
OPTIONS (user 'mlhbase_prd', password 'XXX');
查询:select * from pg_user_mappings;
删除:DROP USER MAPPING for user_name SERVER server_name;
比如删除上面创建的用户映射:DROP USER MAPPING for mlhsale_prd SERVER base_server;
4、创建映射表
mlhsale_prd库
CREATE FOREIGN TABLE fdw_t_jj_sys_user(
id varchar(32) NOT NULL,
user_name varchar(32),
real_name varchar(32),
phone varchar(32),
job_no varchar(50),
del_flag varchar(1)
)
SERVER base_server
OPTIONS (schema_name 'mlhbase_prd', table_name 't_jj_sys_user');
映射到mlhbase_prd库的t_jj_sys_user表,字段可以比原表少,
查询:select * from fdw_t_jj_sys_user;
删除fdw表:drop FOREIGN TABLE fdw_t_jj_sys_user;