熟能生巧丨通过ODBC连接 MogDB 数据库

适用范围

MogDB 5.0.X

问题概述

在运维过程中总是有些问题需要和应用维护人员配合来解决或定位某些性能问题根因,因此要想使工作配合的更加默契,需要对应用连接数据库的方式及数据操作方法有一定了解,所以有了以下内容。

解决方案

ODBC(Open Database Connectivity,开放数据库连接)是一种用于访问不同数据库管理系统(DBMS)的标准应用程序编程接口(API)。

它提供了一种统一的方式,使得应用程序能够以相同的方式连接和操作各种不同类型的数据库,而无需为每种数据库编写特定的驱动程序代码,这不仅增加了应用程序的可移植性和灵活性,还减少了开发和维护的成本。

步骤 1. unixODBC软件包下载并解压

https://sourceforge.net/projects/unixodbc/files/unixODBc 下载对应的unixODBC,并将上传到目录/opt/odbc。本实验使用 unixODBC 2.3.5。

[root@app2 odbc]# pwd
/opt/odbc
[root@app2 odbc]# ll
total 1596
-rw-r--r-- 1 root root 1633390 Jul 26 17:31 unixODBC-2.3.5.tar.gz

步骤 2. 编译ODBC

修改configure文件(如果不存在,那么请修改configure.ac),找到 LIB_VERSION将它的值修改为"1:0:0",这样将编译出*.so.1的动态库,与 psqlodbcw.so的依赖关系相同。

[root@app2 odbc]# tar -xf unixODBC-2.3.5.tar.gz
[root@app2 odbc]# cd unixODBC-2.3.5/
[root@app2 unixODBC-2.3.5]# vi configure
[root@app2 unixODBC-2.3.5]# grep LIB_VERSION  configure
LIB_VERSION
LIB_VERSION="1:0:0"
[root@app2 unixODBC-2.3.5]# ./configure --enable-gui=no

注:如果要在ARM服务器上编译,请追加一个configure参数:--build=aarch64-unknown-linux-gnu

make
make install

步骤 3. 上传MogDB-ODBC-5.0.0.2-CentOS-x86_64.tar.gz文件并解压

下载地址:https://www.mogdb.io/downloads/odbc/all

[root@app2 odbc]# pwd
/opt/odbc
[root@app2 odbc]# tar -xf MogDB-ODBC-5.0.0.2-CentOS-x86_64.tar.gz
[root@app2 odbc]# ll
total 10612
drwxr-xr-x  2 root       root          4096 Mar 16 17:05 lib
-rw-r--r--  1 root       root       9217501 Jul 26 17:50 MogDB-ODBC-5.0.0.2-CentOS-x86_64.tar.gz
drwxr-xr-x  3 root       root          4096 Mar 16 17:05 odbc
drwxrwxr-x 20 lighthouse lighthouse    4096 Jul 26 17:45 unixODBC-2.3.5
-rw-r--r--  1 root       root       1633390 Jul 26 17:31 unixODBC-2.3.5.tar.gz

步骤 4. 拷贝odbc目录下的文件到/usr/local/lib

将MogDB-ODBC-5.0.0.2文件解压后会得到两个文件夹:lib与odbc,在odbc文件夹中还会有一个lib文件夹。odbc/lib中会有"psqlodbca.la""psqlodbca.so""psqlodbcw.la"和"psqlodbcw.so"四个文件,将这四个文件拷贝到"/usr/local/lib"目录下。

[root@app2 odbc]# cd odbc/lib/
[root@app2 lib]# ll
total 1512
-rwxr-xr-x 1 root root   1287 Mar 16 17:05 psqlodbca.la
-rwxr-xr-x 1 root root 744744 Mar 16 17:05 psqlodbca.so
-rwxr-xr-x 1 root root   1287 Mar 16 17:05 psqlodbcw.la
-rwxr-xr-x 1 root root 791472 Mar 16 17:05 psqlodbcw.so
[root@app2 lib]# pwd
/opt/odbc/odbc/lib
[root@app2 lib]# cp ./* /usr/local/lib
lib/     lib64/   libexec/
[root@app2 lib]# cp ./* /usr/local/lib/

将MogDB-ODBC-5.0.0.2文件解压后,把lib目录中的库拷贝到"/usr/local/lib"目录下。

[root@app2 lib]# cp * /usr/local/lib/
cp: overwrite '/usr/local/lib/libodbccr.la'? y
cp: overwrite '/usr/local/lib/libodbccr.so'? y
cp: overwrite '/usr/local/lib/libodbcinst.la'? y
cp: overwrite '/usr/local/lib/libodbcinst.so'? y
cp: overwrite '/usr/local/lib/libodbc.la'? y
cp: overwrite '/usr/local/lib/libodbc.so'? y

步骤 5. 配置ODBC驱动文件

在/usr/local/etc/odbcinst.ini文件中追加以下内容。

[GaussMPP]
Driver64=/usr/local/lib/psqlodbcw.so
setup=/usr/local/lib/psqlodbcw.so
  • [DriverName]:驱动器名称,对应数据源DSN中的驱动名。

  • Driver64:驱动动态库的路径。

  • Setup:驱动安装路径,与Driver64中动态库的路径一致。

步骤 6. 配置数据源文件

在/usr/local/etc/odbc.ini文件中追加以下内容:

[MPPODBC]
Driver=MogDB
Servername=127.0.0.1
Database=demo
Username=dbuser
Password=MogDB@123456
Port=36000
Sslmode=allow
  • Servername:数据库Server IP。

  • Driver:驱动名,对应odbcinst.ini中的DriverName。

  • Database:连接数据库名。

  • Username:数据库用户名。

  • Password:数据库用户密码。

  • Port:数据库侦听端口

步骤 7. 配置数据库服务器

以操作系统用户omm登录数据库主节点。

执行如下命令增加对外提供服务的网卡IP或者主机名(英文逗号分隔),其中NodeName为当前节点名称。

gs_guc reload -N NodeName -l all -c"listen addresses="*"

执行如下命令,在数据库主节点配置文件中增加一条认证规则:

gs_guc reload -N all -l all -h "host all all 0.0.0.0/0 sha256"

重启 MogDB:

gs_ctl stop
gs_ctl start

步骤 8. 在客户端配置环境变量

[root@app2 ~]# vi ./.bashrc

在配置文件中追加以下内容:

export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
export ODBCSYSINI=/usr/local/etc
export ODBCINI=/usr/local/etc/odbc.ini

执行如下命令使设置生效:

source ~/.bashrc

步骤 9. 测试数据源配置

安装后/usr/bin下面会存放生成的二进制可执行文件isql,执行isql -v MogDBODBC(数据源名称)命令。

如果显示如下信息,表明配置正确,连接成功:

[root@app2 etc]# isql -v MogDBODBC
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

执行命令后如果报以下错误,需安装RPM解决依赖:

[root@app2 ~]# isql -v MogDBODBC
isql: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory

yum  install libtool-ltdl

关于作者

贾勇智,云和恩墨技术顾问,具有银行、税务、电力等行业丰富的数据库运维经验,擅长数据库自动化运维工具开发,热衷技术分享,拥有OCM / PGCM / KCP认证,目前专注于 openGauss、MogDB、PostgreSQL 数据库的运维工作。

相关推荐
abandondyy1 小时前
MySQL---主从复制和读写分离
数据库·mysql
DEARM LINER2 小时前
mysql 巧妙的索引
数据库·spring boot·后端·mysql
码农幻想梦3 小时前
实验九 视图的使用
前端·数据库·oracle
影子落人间3 小时前
Oracle创建存储过程,创建定时任务
数据库·oracle
大G哥3 小时前
02、Oracle过滤和排序数据
数据库·oracle
喵手3 小时前
Java 与 Oracle 数据泵实操:数据导入导出的全方位指南
java·开发语言·oracle
代码吐槽菌5 小时前
基于SSM的汽车客运站管理系统【附源码】
java·开发语言·数据库·spring boot·后端·汽车
伏虎山真人5 小时前
开源数据库 - mysql - 组织结构(与oracle的区别)
数据库·mysql·开源
精致先生6 小时前
问题记录01
java·数据库·mybatis
Channing Lewis6 小时前
salesforce developer console 匿名执行是以什么身份执行的
数据库·安全·salesforce