openGauss

开源数据库

openGauss社区官网

开源社区

MogDB插件之跨库访问

彭冲2022-05-18MogDB插件之跨库访问

MogDB 插件之跨库访问

本文出处:https://www.modb.pro/db/336337

MogDB 数据库从 2.1 版本开始将插件和工具包进行了封装,我们可以随时方便的进行集成。从官网https://www.mogdb.io/downloads/mogdb/的这个页面可以进行下载:

本文将在 Centos 平台首先演示 dblink 插件的使用方法:

将官网下载的 plugins-CentOS-x86-2.1.0.tar.gz 上传到服务器后,解压

$ tar zxvf plugins-CentOS-x86-2.1.0.tar.gz

将插件相关文件安装到 MogDB 数据库:

  • 方式一:使用脚本进行安装
$ ./gs_install_plugin_local -X clusterconfig.xml --dblink
  • 方式二:手工拷贝安装
$ cd plugins/dblink
$ cp dblink.so /opt/mogdb210/lib/postgresql/
$ cp dblink--1.0.sql dblink.control dblink--unpackaged--1.0.sql \
/opt/mogdb210/share/postgresql/extension/

本文使用第二种方式。

创建扩展的用户需要具有 sysadmin 权限,本文使用 moguser 用户

MogDB=# \du moguser
           List of roles
 Role name | Attributes | Member of
-----------+------------+-----------
 moguser   | Sysadmin   | {}

下面使用 moguser 创建 dblink 扩展,并进行后续测试

$ gsql -U moguser postgres -r
gsql ((MogDB 2.1.0 build 56189e20) compiled at 2022-01-07 18:47:53 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

MogDB=> create extension dblink with schema public;
CREATE EXTENSION

查看 dblink 扩展

MogDB=> \dx dblink                               List of installed extensions  Name  | Version | Schema |                         Description                           --------+---------+--------+-------------------------------------------------------------- dblink | 1.0     | public | connect to other PostgreSQL databases from within a database (1 row)
连接实例
MogDB=> \dx dblink
                               List of installed extensions
  Name  | Version | Schema |                         Description
--------+---------+--------+--------------------------------------------------------------
 dblink | 1.0     | public | connect to other PostgreSQL databases from within a database
(1 row)

上面使用远程用户 dk 连接到远程实例 ... 的 mydb。

执行查询
MogDB=> select * from dblink('mydblink','select * from dk.t1;') as t(id int , info text);
 id | info
----+------
  1 | one
  2 | two
(2 rows)

执行修改

insert、update、delete、truncate 操作使用 dblink_exec 函数

insert 测试

MogDB=> select  dblink_exec('mydblink', 'insert into t1 select generate_series(10,20), ''hello''');
 dblink_exec
-------------
 INSERT 0 11
(1 row)

update 测试

MogDB=> select  dblink_exec('mydblink', 'update t1 set info=''ten'' where id=10');
 dblink_exec
-------------
 UPDATE 1
(1 row)

delete 测试

MogDB=> select  dblink_exec('mydblink', 'delete from t1  where id=20');
 dblink_exec
-------------
 DELETE 1
(1 row)

truncate 测试

MogDB=> select  dblink_exec('mydblink', 'truncate t1');
  dblink_exec
----------------
 TRUNCATE TABLE
(1 row)

断开实例
MogDB=> select dblink_disconnect('mydblink');
 dblink_disconnect
-------------------
 OK
(1 row)