暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MogDB3.0.2安装dolphin插件

由迪 2023-12-20
546

原作者:计议

1.概述

dolphin是MogDB针对MySQL的兼容插件包,其中新增了MySQL数据类型,函数等功能的相关支持。插件安装首先需要下载plugins插件包

2.实践操作

1.创建插件存放目录

默认情况下,在安装插件时,不指定-p选项(该选项用于指定插件的存放位置),会自动到GPHOME/script/static目录下寻找(GPHOME就是数据库的工具目录),static目录一开始并没有,需要我们自己创建;当然我们也可以将插件安装包放到任何目录下,只需在安装插件时指定插件包的路径。为了方便管理与维护,选择创建$GPHOME/script/static目录是明智的选择:

[omm@mogdb01 ~]$ cd $GPHOME/script/
[omm@mogdb01 script]$ ls -lrt

[omm@mogdb01 script]$ mkdir static
[omm@mogdb01 script]$  cd static/

2.下载插件包

进入MogDB下载界面,选择介质下载,然后根据自己的操作系统版本和CPU类型下载相应版本的插件包,这里下载的是MogDB3.0.0对应的插件包,该插件包是一个后缀为.tar.gz的压缩包,大小在70M左右,该包中包含了目前MogDB目前支持的所有的插件:pg_repack、pg_trgm、dblink、wal2json、orafce、pg_bulkload、pg_prewarm。(后续的所有操作都是建立在之前的操作之上,是有序的操作)

[omm@mogdb01 static]$ wget https://cdn-mogdb.enmotech.com/mogdb-media/3.0.2/Plugins-3.0.2-CentOS-x86_64.tar.gz
--2022-11-23 23:17:33--  https://cdn-mogdb.enmotech.com/mogdb-media/3.0.2/Plugins-3.0.2-CentOS-x86_64.tar.gz
Resolving cdn-mogdb.enmotech.com (cdn-mogdb.enmotech.com)... 120.192.66.104
Connecting to cdn-mogdb.enmotech.com (cdn-mogdb.enmotech.com)|120.192.66.104|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 74453142 (71M) [application/gzip]
Saving to: ‘Plugins-3.0.2-CentOS-x86_64.tar.gz’

100%[===============================================================================================================================>] 74,453,142  4.61MB/s   in 22s    

2022-11-23 23:17:55 (3.23 MB/s) - ‘Plugins-3.0.2-CentOS-x86_64.tar.gz’ saved [74453142/74453142]

3.安装dolphin插件

这里使用gs_install_plugin_local进行插件的安装,成功执行这个命令主要干了两件事:
1.将插件包解压
2.将指定安装的插件的库文件拷贝到$GAUSSHOME/lib/postgreql目录下

[omm@mogdb01 static]$ chmod +x Plugins-3.0.2-CentOS-x86_64.tar.gz
[omm@mogdb01 static]$ ls -lrt
total 72712
-rwx------ 1 omm omm 74453142 Sep 19 14:16 Plugins-3.0.2-CentOS-x86_64.tar.gz
[omm@mogdb01 static]$ gs_install_plugin_local --dolphin
SUCCESS: dolphin

4.创建dolphin插件

dolphin插件需要在兼容类型为B(该类型兼容MySQL)的数据库中才能创建,所以,不妨我们先连接,然后创建兼容类型为B的测试数据库:

[omm@mogdb01 static]$ gsql -d postgres -p 26000 -r
gsql ((MogDB 3.0.2 build 9bc79be5) compiled at 2022-09-18 00:38:16 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

MogDB=# \l
                                          List of databases
     Name     | Owner | Encoding |    Collate    |     Ctype     | Access privileges | Compatibility 
--------------+-------+----------+---------------+---------------+-------------------+---------------
 basictest    | omm   | UTF8     | C             | C             |                   | A
 mogtest3     | mog03 | UTF8     | C             | C             | =Tc/mog03        +| A
              |       |          |               |               | mog03=CTc/mog03  +| 
              |       |          |               |               | mog03=APm/mog03   | 
 postgres     | omm   | UTF8     | C             | C             |                   | A
 template0    | omm   | UTF8     | C             | C             | =c/omm           +| A
              |       |          |               |               | omm=CTc/omm       | 
 template1    | omm   | UTF8     | C             | C             | =c/omm           +| A
              |       |          |               |               | omm=CTc/omm       | 
 test_gbkplus | omm   | GB18030  | zh_CN.GB18030 | zh_CN.GB18030 |                   | A
(6 rows)

MogDB=# create database cmysql DBCOMPATIBILITY 'B';
CREATE DATABASE
MogDB=# 
MogDB=# \l
                                          List of databases
     Name     | Owner | Encoding |    Collate    |     Ctype     | Access privileges | Compatibility 
--------------+-------+----------+---------------+---------------+-------------------+---------------
 basictest    | omm   | UTF8     | C             | C             |                   | A
 cmysql       | omm   | UTF8     | C             | C             |                   | B
 mogtest3     | mog03 | UTF8     | C             | C             | =Tc/mog03        +| A
              |       |          |               |               | mog03=CTc/mog03  +| 
              |       |          |               |               | mog03=APm/mog03   | 
 postgres     | omm   | UTF8     | C             | C             |                   | A
 template0    | omm   | UTF8     | C             | C             | =c/omm           +| A
              |       |          |               |               | omm=CTc/omm       | 
 template1    | omm   | UTF8     | C             | C             | =c/omm           +| A
              |       |          |               |               | omm=CTc/omm       | 
 test_gbkplus | omm   | GB18030  | zh_CN.GB18030 | zh_CN.GB18030 |                   | A
(7 rows)

MogDB=# \c cmysql
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "cmysql" as user "omm".

cmysql=# create extension dolphin ;
ERROR:  could not load library "dolphin.so": /opt/mogdb/app/lib/postgresql/dolphin.so: undefined symbol: _Z23heapTupleGetPartitionIdP12RelationDataPv

报错说dolphin插件的库文件并不在shared_preload_libraries中,shared_preload_libraries是一个postmaster类型的参数,其作用为:用于声明一个或者多个在服务器启动的时候预先装载的共享库,意思我们还要配置一下该参数,让其预先加载dolphin的库文件dolphin.so。
以root用户的身份查看库文件dolphin.so的路径,并配置shared_preload_libraries参数:

查看库文件的路径
[root@mogdb01 ~]# find / -name dolphin.so
/opt/mogdb/tool/script/static/plugins/plugins/dolphin/dolphin.so
/opt/mogdb/app/lib/postgresql/dolphin.so

修改参数
[omm@mogdb01 static]$ vi /opt/mogdb/data/postgresql.conf

#shared_preload_libraries = ''         # (change requires restart)
修改为以下值
shared_preload_libraries = '/opt/mogdb/app/lib/postgresql/dolphin.so'         # (change requires restart)

/opt/mogdb/app/lib/postgresql/dolphin.so

重启数据库使配置生效
[omm@mogdb01 static]$ gs_om -t restart
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.
Starting cluster.
=========================================
[SUCCESS] mogdb01
2022-11-23 23:22:32.683 [unknown] [unknown] localhost 47409036988096 0[0:0#0] 0 [BACKEND] WARNING:  could not create any HA TCP/IP sockets
2022-11-23 23:22:32.685 [unknown] [unknown] localhost 47409036988096 0[0:0#0] 0 [BACKEND] WARNING:  Failed to initialize the memory protect for g_instance.attr.attr_storage.cstore_buffers (16 Mbytes) or shared memory (3487 Mbytes) is larger.
[SUCCESS] mogdb02
2022-11-23 23:22:36.241 [unknown] [unknown] localhost 47428802674368 0[0:0#0] 0 [BACKEND] WARNING:  could not create any HA TCP/IP sockets
2022-11-23 23:22:36.243 [unknown] [unknown] localhost 47428802674368 0[0:0#0] 0 [BACKEND] WARNING:  Failed to initialize the memory protect for g_instance.attr.attr_storage.cstore_buffers (16 Mbytes) or shared memory (3487 Mbytes) is larger.

再次创建

DBCOMPATIBILITY compatibility_type
指定兼容的数据库的类型。compatibility_type取值范围: A、B、C、PG。分别表示兼容Oracle、MySQL、Teradata和PostgreSQL。但是C目前已经放弃支持,因此常用的取值是A、B、PG,默认兼容A。

[omm@mogdb01 ~]$ gsql cmysql -p 26000 -r
gsql ((MogDB 3.0.2 build 9bc79be5) compiled at 2022-09-18 00:38:16 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

cmysql=# create extension dolphin;
CREATE EXTENSION

5. 验证

接下来执行mysql特有函数以验证dolphin插件安装是否成功,以rand()函数为例:

cmysql=# select rand();
       rand        
-------------------
 0.544465810060501
(1 row)

在安装了dolphin插件的B-Type数据库my_test上可以正确执行rand()函数,但是在未安装插件的数据库上就无法执行,报错为function rand() does not exist。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论