首页 > 数据库 >openGauss mysql_fdw

openGauss mysql_fdw

时间:2024-04-29 14:11:23浏览次数:30  
标签: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/renxyz/p/18165556

相关文章

  • openGauss NUMA-aware分配和亲和性
    NUMA-aware分配和亲和性非统一内存访问(NUMA)是一种计算机内存设计,用于多重处理,其中内存访问时间取决于内存相对于处理器的位置。处理器可以利用NUMA的优势,优先访问本地内存(速度更快),而不是访问非本地内存(这意味着它不会访问另一个处理器的本地内存或处理器之间共享的内存)。MOT内存......
  • openGauss 创建和管理分区表
    创建和管理分区表背景信息openGauss数据库支持的分区表为范围分区表、间隔分区表、列表分区表、哈希分区表。范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期,例如将销售数据按照月份进......
  • mysql按季度统计数量金额
    需求:oms_order-订单表:order_code-订单号,sales_time-销售时间oms_order_shopify_refund-订单退款表:order_code-订单号,refund_time-退款时间oms_order_product:order_code-订单号,seller_sku-商品编码,buy_quantity-售出数量,refund_quantity-退货数量查询订单时间按季度统计售出数量,并......
  • 分享几个MySQL数据库管理效率的利器
    本文转载出处:https://mp.weixin.qq.com/s?__biz=MzUzMTkyODc4NQ==&mid=2247486787&idx=1&sn=9738dd8565b0744c05bfb0fe44d2e990&chksm=faba4efdcdcdc7eb6e729ed6c941b064cf8c7c3a7d87eff491d32d4ee7f6423ebd230033d2cc&scene=178&cur_album_id=28693454862......
  • 为什么MySQL不是数据库类型
    MySQL实际上是一个关系型数据库管理系统(RDBMS),而不是一个数据库类型。这里的关键在于理解“数据库类型”和“数据库管理系统”之间的区别。数据库类型:通常指的是数据库模型或数据结构的分类,比如关系型数据库(如MySQL、Oracle、SQLServer等)和非关系型数据库(如MongoDB、Redis、C......
  • Mysql事务原理与优化最佳实践
    学习来源-图灵课堂https://vip.tulingxueyuan.cn说到MySQL的innodb的一大特性,就不得不说到事务。今天就学习事务。事务事务的定义:逻辑上的一组操作,要么一起成功,要么一起失败,中间绝对不会存在别的状态。逻辑上的一组操作,就是说这些操作都是有逻辑关系的。我们通常说的事务是针......
  • mysql理论数据库优化MySQL数据库面试题
    mysql数据库优化MySQL数据库面试题 MySQL数据库面试题MySQL数据库面试题1、什么是SQL?        结构化查询语言(StructuredQueryLanguage)简称SQL,是一种数据库查询语言。作用:用于存取数据、查询、更新和管理关系数据库系统。 2、什么是MySQL?        M......
  • 日志分析-mysql应急响应
    简介mysql应急响应ssh账号root密码xjmysqlsshenv.xj.edisec.net-pxxxxx1.黑客第一次写入的shellflag{关键字符串}2.黑客反弹shell的ipflag{ip}3.黑客提权文件的完整路径md5flag{md5}注/xxx/xxx/xxx/xxx/xxx.xx4.黑客获取的权限flag步骤#1步骤#2/var/l......
  • yum安装mysql报错--您可以尝试添加 --skip-broken 选项来解决该问题 清除缓存命令
    yum安装mysql报错--您可以尝试添加--skip-broken选项来解决该问题    安装mysql时,如果安装报错,首先删除缓存,    1、清除缓存  yumcleancache    2、重新加载  yummakecache    3、重新安装  yuminstallmysql    此......
  • Linux Centos7 虚拟环境安装Mysql数据库(超详细图文讲解)
    LinuxCentos7虚拟环境安装Mysql数据库(超详细图文讲解)1、进入Centos7虚拟机,使用wget下载Mysql相应的rpm包下载:wgethttp://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm如果没有wget命令,可以使用yum安装,yuminstallwget2、执行rpm命令,安装rpmrpm-ivhmys......