MogDBMogDB Stack
生态工具
v3.0
文档目录
文档:v3.0
支持的版本:
其他版本:

mysql_fdw

mysql_fdw是一款开源插件。MogDB基于开源的mysql_fdw Release 2.5.3版本进行开发适配。

编译和使用mysql_fdw需要环境上包含MariaDB的开发包,所以MogDB默认不编译mysql_fdw,下面依次介绍如何编译和使用mysql_fdw。

编译mysql_fdw

编译mysql_fdw需要安装MariaDB的开发库和头文件,推荐使用MariaDB的官方源进行安装。

配置好源后,使用yum install MariaDB-devel MariaDB-shared安装相关开发库。另外MariaDB-client是MariaDB的客户端工具,也可以根据需要安装,用于连接MariaDB进行测试。

安装好开发包后,就可以开始编译mysql_fdw了。编译时需要在执行configure时,加入--enable-mysql-fdw选项。后续按照正常的MogDB编译方式编译即可。

编译完成后,编译产物为mysql_fdw.so,位于安装目录的**lib/postgresql/下。mysql_fdw相关的sql文件和control文件,位于安装目录的share/postgresql/extension/**下。

如果编译安装时,没有加入--enable-mysql-fdw选项,可以在MogDB安装完成后,再次编译mysql_fdw,然后手动将编译产物mysql_fdw.so放到对应的安装目录lib/postgresql/,将mysql_fdw-1.0-1.1.sql、mysql_fdw-1.1.sql、mysql_fdw-1.0.sql、mysql_fdw.control放到对应的安装目录**share/postgresql/extension/**即可。

使用mysql_fdw

  • 使用mysql_fdw需要连接MariaDB或者MySQL Server,MariaDB或MySQL Server请自行安装。

  • 加载mysql_fdw扩展:CREATE EXTENSION mysql_fdw;

  • 创建服务器对象:CREATE SERVER

  • 创建用户映射:CREATE USER MAPPING

  • 创建外表:CREATE FOREIGN TABLE

    外表的表结构需要与MySQL/MariaDB侧的表结构保持一致。注意MySQL/MariaDB侧的表的第一个字段必须具有唯一性约束(如PRIMARY KEY、UNIQUE等)。

  • 对外表做正常的操作,如INSERTUPDATEDELETESELECTEXPLAINANALYZECOPY等。

  • 删除外表:DROP FOREIGN TABLE

  • 删除用户映射:DROP USER MAPPING

  • 删除服务器对象:DROP SERVER

  • 删除扩展:DROP EXTENSION mysql_fdw;

常见问题

  • 在MogDB上建立外表时,不会同步在MariaDB/MySQL Server上建表,需要自己利用MariaDB/MySQL Server的客户端连接MariaDB/MySQL Server建表。
  • 创建USER MAPPING时使用的MariaDB/MySQL Server用户需要有远程连接MariaDB/MySQL Server及对表相关操作的权限。使用外表前,可以在MogDB server所在的机器上,使用MariaDB/MySQL Server的客户端,使用对应的用户名密码确认能否成功连接MariaDB/MySQL Server并进行操作。
  • 对外表执行DML操作时,出现Can't initialize character set SQL_ASCII (path: compiled_in)错误。由于MariaDB不支持SQL_ASCII编码格式,目前只能通过修改MogDB database的编码格式解决该问题。修改database编码格式的方式为update pg_database set encoding = pg_char_to_encoding('UTF-8') where datname = 'postgres'; datname根据实际情况填写。注意修改完编码格式后,需要重新开启一个gsql会话,才能使mysql_fdw使用更新后的参数。也可以通过在执行gs_initdb时,使用--locale=LOCALE,指定默认的编码格式为非SQL_ASCII编码。

注意事项

  • 两个mysql外表间的SELECT JOIN不支持下推到MariaDB/MySQL Server执行,会被分成两条SQL语句传递到MariaDB/MySQL Server执行,然后在MogDB处汇总处理结果。
  • 不支持IMPORT FOREIGN SCHEMA语法。
  • 不支持对外表进行CREATE TRIGGER操作。
数据库
基于openGauss开源数据库进行定制,推出的企业发行
Kubernetes上的MogDB自动运维系统
关于
云和恩墨社区
MogDB联系我们
管理工具
高可用管理
图形化管理
部署运维工具
Migrate to MogDB解决方案
异构数据库迁移
异构数据同步
兼容性分析
数据一致性校验
文档工具
参数对比