首页 > 数据库 >openGauss mysql_fdw

openGauss mysql_fdw

时间:2024-04-29 15:56:31浏览次数:20  
标签:mysql 编译 fdw MySQL openGauss MariaDB

mysql_fdw

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

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

编译mysql_fdw

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

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

示例版本如下:

操作系统: CentOS 7.6 x86

yum安装的mysql开发库版本:

[root@kwemhisprc10431 peilq_package]# yum list installed | grep mariadb
MariaDB-common.x86_64                   10.5.6-1.el7.centos            @mariadb
MariaDB-compat.x86_64                   10.5.6-1.el7.centos            @mariadb
MariaDB-devel.x86_64                    10.5.6-1.el7.centos            @mariadb
MariaDB-shared.x86_64                   10.5.6-1.el7.centos            @mariadb
galera-4.x86_64                         26.4.5-1.el7.centos            @mariadb

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

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

如果编译安装时,没有加入 --enable-mysql-fdw 选项,可以在openGauss安装完成后,再次编译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;

常见问题

  • 在openGauss上建立外表时,不会同步在MariaDB/MySQL Server上建表,需要自己利用MariaDB/MySQL Server的客户端连接MariaDB/MySQL Server建表。

  • 创建USER MAPPING时使用的MariaDB/MySQL Server用户需要有远程连接MariaDB/MySQL Server及对表相关操作的权限。使用外表前,可以在openGauss server所在的机器上,使用MariaDB/MySQL Server的客户端,使用对应的用户名密码确认能否成功连接MariaDB/MySQL Server并进行操作。

  • 对外表执行DML操作时,出现Can't initialize character set SQL_ASCII (path: compiled_in) 错误。由于MariaDB不支持SQL_ASCII编码格式,目前只能通过修改openGauss 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执行,然后在openGauss处汇总处理结果。

  • 不支持IMPORT FOREIGN SCHEMA语法。

  • 不支持对外表进行CREATE TRIGGER操作。

详情查看:https://opengauss.org

详情查看:https://docs-opengauss.osinfra.cn

标签:mysql,编译,fdw,MySQL,openGauss,MariaDB
From: https://www.cnblogs.com/techbing/p/18165893

相关文章

  • openGauss NUMA-aware分配和亲和性
    NUMA-aware分配和亲和性非统一内存访问(NUMA)是一种计算机内存设计,用于多重处理,其中内存访问时间取决于内存相对于处理器的位置。处理器可以利用NUMA的优势,优先访问本地内存(速度更快),而不是访问非本地内存(这意味着它不会访问另一个处理器的本地内存或处理器之间共享的内存)。MOT内存......
  • openGauss Schema
    SchemaSchema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。每个数据库包含一个或多个Schema。数据库中的每个Schema包含表和其他类型的对象。数据库创建初......
  • openGauss MOT资源利用率
    MOT资源利用率在4路96核512GBRAM的x86服务器上测试的资源利用率如下所示。MOT能够高效持续消耗几乎所有可用的CPU资源。例如,192核390万tpmC的CPU利用率几乎达到100%。tmpC:每分钟完成的TPC-C事务数以橙色条柱和左侧的Y轴tpmC表示。CPU利用率(%):CPU利用率由蓝色线条和右侧的Y轴......
  • openGauss MOT纵向扩容架构
    MOT纵向扩容架构纵向扩容即为同一台机器添加额外的核以增加算力。纵向扩容是传统上为单对控制器和多核的机器增加算力的常见形式。纵向扩容架构受限于控制器的可扩展性。技术要求MOT旨在实现以下目标:线性扩容:MOT提供事务性存储引擎,利用单个NUMA架构服务器的所有核,以提供近线......
  • openGauss MOT部署
    MOT部署以下各小节介绍了各种必需和可选的设置,以达到最佳部署效果。MOT服务器优化:x86MOT服务器优化:基于Arm的华为TaiShan2P/4P服务器MOT配置......
  • openGauss MOT测试总结
    MOT测试总结MOT比磁盘表性能提升2.5至4.1倍,在Arm/鲲鹏256核服务器上达到480万tpmC。测试结果清楚表明MOT在扩展和利用所有硬件资源方面的卓越能力。随着CPU槽位和服务器核数增加,性能会随之跃升。MOT在Arm/鲲鹏架构下最高可达3万tpmC/核,在x86架构下最高可达4万tpmC/核。由于持久......
  • openGauss MOT本地内存和全局内存
    MOT本地内存和全局内存SILO管理本地内存和全局内存,如所示。全局内存是所有核共享的长期内存,主要用于存储所有的表数据和索引。本地内存是短期内存,主要由会话使用,用于处理事务及将数据更改存储到事务内存中,直到提交阶段。当事务需要更改时,SILO将该事务的所有数据从全局内存复......
  • openGauss MOT并发控制机制
    MOT并发控制机制通过大量研究,我们找到了最佳的并发控制机制,结论为:基于SILO[的OCC算法是MOT中最符合ACID特性的OCC算法。SILO为满足MOT的挑战性需求提供了最好的基础。说明:MOT完全符合原子性、一致性、隔离性、持久性(ACID)特性,如MOT简介所述。下面介绍MOT的并发控制机制。......
  • openGauss MOT持久性
    MOT持久性持久性是指长期的数据保护(也称为磁盘持久化)。持久性意味着存储的数据不会遭受任何形式的退化或损坏,因此数据不会丢失或损坏。持久性可确保在有计划停机(例如维护)或计划外崩溃(例如电源故障)后数据和MOT引擎恢复到一致状态。内存存储是易失的,需要电力来维护所存储的信息。......
  • openGauss MOT持久性概念
    MOT持久性概念持久性是指长期的数据保护(也称为磁盘持久性)。持久性意味着存储的数据不会遭受任何形式的退化或破坏,因此数据不会丢失或损坏。持久性可确保在有计划停机(例如维护)或计划外崩溃(例如电源故障)后数据和MOT引擎恢复到一致状态。内存存储是易失的,需要电源来维护所存储的信......