文章摘要
这篇文章介绍了如何通过PostgreSQL扩展插件在MySQL服务器上建立数据同步的连接。主要内容包括:
1. **插件扩展**:通过`CREATE EXTENSION mysql_fdw`扩展PostgreSQL插件,为MySQL提供数据同步功能。
2. **服务器对象创建**:创建PostgreSQL服务器对象`mysql_fdw`,作为MySQL的Foreign Data Wrapper,用于处理数据同步。
3. **用户映射**:配置PostgreSQL用户映射,使PostgreSQL用户在MySQL服务器上可见。
4. **外部表创建**:通过`CREATE FOREIGN TABLE warehouse`将PostgreSQL的仓库表映射到MySQL的仓库表。
5. **数据操作**:进行数据插入、查询、删除和更新操作,验证数据同步功能。
6. **查询优化**:通过`EXPLAIN VERBOSE`查看查询执行计划,优化数据同步的查询性能。
文章的核心内容是展示如何配置PostgreSQL插件,实现PostgreSQL与MySQL之间的数据同步连接,并通过外部表和查询优化实现高效的跨数据库数据操作。
– 加载扩展插件
CREATE EXTENSION mysql_fdw;
— 创建服务器对象
CREATE SERVER mysql_server
FOREIGN DATA WRAPPER mysql_fdw
OPTIONS (host ‘127.0.0.1’, port ‘3306’);
— 创建用户映射
CREATE USER MAPPING FOR postgres
SERVER mysql_server
OPTIONS (username ‘foo’, password ‘bar’);
— 创建外部表
CREATE FOREIGN TABLE warehouse
(
warehouse_id int,
warehouse_name text,
warehouse_created timestamp
)
SERVER mysql_server
OPTIONS (dbname ‘db’, table_name ‘warehouse’);
— 插入数据
INSERT INTO warehouse values (1, ‘UPS’, current_date);
INSERT INTO warehouse values (2, ‘TV’, current_date);
INSERT INTO warehouse values (3, ‘Table’, current_date);
— 查询数据
SELECT * FROM warehouse ORDER BY 1;
warehouse_id | warehouse_name | warehouse_created
————-+—————-+——————-
1 | UPS | 10-JUL-20 00:00:00
2 | TV | 10-JUL-20 00:00:00
3 | Table | 10-JUL-20 00:00:00
— 删除数据
DELETE FROM warehouse where warehouse_id=3;
— 更新数据
UPDATE warehouse set warehouse_name=’UPS_NEW’ where warehouse_id=1;
— 查看执行计划
EXPLAIN VERBOSE SELECT warehouse_id, warehouse_name FROM warehouse WHERE warehouse_name LIKE ‘TV’ limit 1;
QUERY PLAN
——————————————————————————————————————–
Limit (cost=10.00..11.00 rows=1 width=36)
Output: warehouse_id, warehouse_name
-> Foreign Scan on public.warehouse (cost=10.00..1010.00 rows=1000 width=36)
Output: warehouse_id, warehouse_name
Local server startup cost: 10
Remote query: SELECT `warehouse_id`, `warehouse_name` FROM `db`.`warehouse` WHERE ((`warehouse_name` LIKE BINARY ‘TV’))