MySQL_FDW
功能描述
支持创建外部数据封装器mysql_fdw,连接MariaDB或MySQL数据库,并能在外部表上进行查询、插入、更新和删除操作。mysql_fdw插件默认参与编译,用户只需要在服务器上安装MariaDB开发包和Vastbase后,即可直接使用mysql_fdw,无须其他操作。
使用MySQL_FDW
下载MariaDB-common、MariaDB-compat、MariaDB-shared、MariaDB-devel文件并进行安装。推荐从MariaDB的官方源进行下载。
使用mysql_fdw需要连接MariaDB或者MySQL Server,MariaDB或MySQL Server请自行安装。
加载mysql_fdw扩展。
CREATE EXTENSION mysql_fdw;
创建服务器对象。
CREATE SERVER
创建用户映射。
CREATE USER MAPPING
创建外表:外表的表结构需要与MySQL/MariaDB侧的表结构保持一致。注意MySQL/MariaDB侧的表的第一个字段必须具有唯一性约束(如PRIMARY KEY、UNIQUE等)。
CREATE FOREIGN TABLE
对外表做正常的操作,如INSERT、UPDATE、DELETE、SELECT、EXPLAIN、ANALYZE、COPY等。
删除外表。
DROP FOREIGN TABLE
删除用户映射。
DROP USER MAPPING
删除服务器对象。
DROP SERVER
删除扩展。
DROP EXTENSION mysql_fdw
注意事项
- 两个mysql外表间的
SELECT JOIN
不支持下推到MariaDB/MySQL Server执行,会被分成两条SQL语句传递到MariaDB/MySQL Server执行,然后在Vastbase处汇总处理结果。 - 不支持
IMPORT FOREIGN SCHEMA
语法。 - 不支持对外表进行
CREATE TRIGGER
操作。
示例
1、创建扩展。
create extension mysql_fdw;
2、新建用户并授权。
create user use_mysql password 'Bigdata@123';
grant usage on foreign data wrapper mysql_fdw to use_mysql;
3、使用use_mysql用户创建FDW Server用于识别外部数据源。
\c - use_mysql
create server mysql_fdw_server foreign data wrapper mysql_fdw options(HOST '172.16.103.108',PORT '20001');
4、使用use_mysql用户创建USER MAPPING用于映射MySQL数据库用户。
create user mapping for use_mysql server mysql_fdw_server options(username 'root',password 'root');
5、在MySQL创建表。
create table test.emp_fdw(empno int,ename varchar(30));
insert into emp_fdw values(1,'foo');
insert into emp_fdw values(2,'bar');
6、在vastbase创建外部表,切换到用户use_mysql。
create foreign table emp_fdw_mysql(empno int,ename varchar(30)) server mysql_fdw_server options(DBNAME 'test',table_name 'emp_fdw');
\c - use_mysql
7、查询外部表数据。
select * from emp_fdw_mysql;
当结果显示如下信息,则表示外部表访问成功。
empno | ename
-------+-------
1 | foo
2 | bar
(2 rows)