熟能生巧丨通过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 数据库的运维工作。

相关推荐
做梦敲代码23 分钟前
达梦数据库-读写分离集群部署
数据库·达梦数据库
dingdingfish43 分钟前
JSON 系列之1:将 JSON 数据存储在 Oracle 数据库中
oracle·json·database
小蜗牛慢慢爬行1 小时前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
hanbarger1 小时前
nosql,Redis,minio,elasticsearch
数据库·redis·nosql
微服务 spring cloud1 小时前
配置PostgreSQL用于集成测试的步骤
数据库·postgresql·集成测试
先睡2 小时前
MySQL的架构设计和设计模式
数据库·mysql·设计模式
弗罗里达老大爷2 小时前
Redis
数据库·redis·缓存
仰望大佬0072 小时前
Avalonia实例实战五:Carousel自动轮播图
数据库·microsoft·c#
学不透java不改名2 小时前
sqlalchemy连接dm8 get_columns BIGINT VARCHAR字段不显示
数据库