适用范围
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 数据库的运维工作。