1. 概述
dolphin是MogDB針對MySQL的兼容插件包,其中新增了MySQL數據類型,函數等功能的相關支持。插件安裝首先需要下載plugins插件包,此實驗根據環境選擇了Plugins-3.0.1-CentOS-x86_64.tar.gz介質。此實驗環境具體如下:
| IP | 操作系統 | 數據庫版本 | Plugins |
|---|---|---|---|
| 192.168.60.128 | CentOS 7 x86_64 | MogDB V3.0.1 | v3.0.1 |
2. 插件包下載、放置
- 插件包放置位置
[root@amogdb mysql]# su - omm
Last login: Mon Aug 15 22:00:23 CST 2022 on pts/0
[omm@amogdb ~]$ cd $GPHOME/script/
[omm@amogdb script]$
- 創建static文件夾
[omm@amogdb script]$ mkdir -p static
- 下載插件包,并將其放置到上步新建的文件夾static下
[omm@amogdb static]$ pwd
/data/mogdb/install/om/script/static
[omm@amogdb static]$ exit
logout
[root@amogdb mysql]# mv '/root/桌面/Plugins-3.0.1-CentOS-x86_64.tar.gz' /data/mogdb/install/om/script/static
[omm@amogdb script]$ cd static/
[omm@amogdb static]$ ll
total 72700
-rwxrw-rw-. 1 root root 74443447 Aug 16 20:24 Plugins-3.0.1-CentOS-x86_64.tar.gz
- 設置權限
[omm@amogdb static]$ chmod +x Plugins-3.0.1-CentOS-x86_64.tar.gz
[omm@amogdb static]$ ll
total 72700
-rwxrw-rw-. 1 omm dbgrp 74443447 Aug 16 20:24 Plugins-3.0.1-CentOS-x86_64.tar.gz
注意:如果提示chmod: changing permissions of ‘Plugins-3.0.1-CentOS-x86_64.tar.gz’: Operation not permitted,此時可能需要設置文件的權限:chown -R omm:dbgrp /data/mogdb/install/om/script/static/Plugins-3.0.1-CentOS-x86_64.tar.gz。
3. 安裝插件
使用gs_install_plugin工具安裝plugin插件
gs_install_plugin -p /data/mogdb/install/om/script/static/Plugins-3.0.1-CentOS-x86_64.tar.gz --plugins dolphin --force
參數說明:
“-p” 插件包的存放地址
“- -plugins” 選擇安裝的部分插件
“- -force” 指定覆蓋舊的插件
回顯如下:
[omm@amogdb static]$ gs_install_plugin -p /data/mogdb/install/om/script/static/Plugins-3.0.1-CentOS-x86_64.tar.gz --plugins dolphin --force
SUCCESS: dolphin
4. 修改參數[重要]
- 在CREATE EXTENSION之前,需要設置參數:
gs_guc set -I all -N all -c "enable_wdr_snapshot=off"
由于dolphin插件會和參數WDR沖突,需要關掉相關配置。在推薦參數設置腳本中,此參數設置為on。所以在安裝完mogdb并且執行過這個腳本的,在創建dolphin擴展前一定要關掉這項參數。
- 修改shared_preload_libraries參數
1> 先找到dolphin.so文件所在地址
[root@amogdb mysql]# find / -name dolphin.so
/data/mogdb/install/om/script/static/plugins/plugins/dolphin/dolphin.so
/data/mogdb/install/app_1a363ea9/lib/postgresql/dolphin.so
2> 復制上面app的地址,修改postgresql.conf中的shared_preload_libraries參數
[omm@amogdb ~]$ vim /data/mogdb/install/data/dn/postgresql.conf
shared_preload_libraries = '/data/mogdb/install/app_1a363ea9/lib/postgresql/dolphin.so'
# (change requires restart)
保存后需要重啟數據庫生效修改參數。
[omm@amogdb ~]$ gs_om -t restart
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.
Starting cluster.
=========================================
[SUCCESS] amogdb
2022-08-16 21:55:43.617 [unknown] [unknown] localhost 140643687024896 0[0:0#0] 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets
2022-08-16 21:55:43.617 [unknown] [unknown] localhost 140643687024896 0[0:0#0] 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets
2022-08-16 21:55:43.618 [unknown] [unknown] localhost 140643687024896 0[0:0#0] 0 [BACKEND] WARNING: No explicit IP is configured for listen_addresses GUC.
2022-08-16 21:55:43.619 [unknown] [unknown] localhost 140643687024896 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 (3711 Mbytes) is larger.
=========================================
Successfully started.
[omm@amogdb ~]$ gsql -d my_test -p 26000 -r
gsql ((MogDB 3.0.1 build 1a363ea9) compiled at 2022-08-05 17:31:04 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
my_test=# show shared_preload_libraries ;
shared_preload_libraries
------------------------------------------------------------
/data/mogdb/install/app_1a363ea9/lib/postgresql/dolphin.so
(1 row)
如果不執行上述操作可能會在重啟時遇到無法啟動的問題或者會提示"Can’t create dolphin extension lib is not in shared_preload_libraries"的字樣。
5. 創建mysql兼容性數據庫
MogDB=# create database my_test DBCOMPATIBILITY 'B';
CREATE DATABASE
DBCOMPATIBILITY compatibility_type
指定兼容的數據庫的類型。compatibility_type取值范圍: A、B、C、PG。分別表示兼容Oracle、MySQL、Teradata和PostgreSQL。但是C目前已經放棄支持,因此常用的取值是A、B、PG,默認兼容A。
my_test=# create extension dolphin;
ERROR: Can't create dolphin extension lib is not in shared_preload_libraries
6. 創建擴展
在B-type的數據庫下(兼容mysql),執行CREATE EXTENSION命令:
my_test=# create extension dolphin;
CREATE EXTENSION
my_test=# set sql_mode=' ';
SET
7. 安裝驗證
接下來執行mysql特有函數以驗證dolphin插件安裝是否成功,以rand()函數為例:
my_test=# select rand();
rand
------------------
0.18004750367254
(1 row)
my_test=# \c postgres
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "postgres" as user "omm".
MogDB=# select rand();
ERROR: function rand() does not exist
LINE 1: select rand();
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
CONTEXT: referenced column: rand
MogDB=#
在安裝了dolphin插件的B-Type數據庫my_test上可以正確執行rand()函數,但是在未安裝插件的數據庫上就無法執行,報錯為function rand() does not exist。
!!安裝dolphin插件成功!!




