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

news2024/10/23 23:19:58

适用范围

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2221949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM+微信小程序的家庭记账本管理系统(家庭1)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 1、管理员端功能有首页、个人中心、用户管理,消费详情管理、收入详情管理、系统管理等。 2、用户端功能有首页、消费详情、收入详情、论坛信息、我的等功能。 2、项目技术 …

数据结构作业day2

作业一:结构体数组存储学生信息(姓名,年龄,分数),完成输入学生信息,输出学生信息,求学生成绩之和,求最低学生成绩。 main.c #include "test.h"int main(int …

GitLab 老旧版本如何升级?

极狐GitLab 正式对外推出 GitLab 专业升级服务 https://dl.gitlab.cn/cm33bsfv! 专业的技术人员为您的 GitLab 老旧版本实例进行专业升级!服务详情可以在官网查看详细解读! 那些因为老旧版本而被攻击的例子 话不多说,直接上图&a…

视频转GIF,5个简单好用的转换工具任你选!

GIF(Graphics Interchange Format),作为一种轻量级的图像文件格式,因其能够存储多帧图像形成简单动画而广受欢迎。无论是动画影视片段,还是日常生活的小确幸,GIF都能将其定格为生动的视觉语言。当我们想要将…

FileLink跨网文件摆渡系统:重构跨网文件传输新时代

在数字化浪潮的推动下,企业对于数据的高效利用和安全管理提出了前所未有的要求。面对不同网络环境间的文件传输难题,传统方法往往显得力不从心,不仅效率低下,还存在极大的安全隐患。而FileLink跨网文件摆渡系统的出现,…

深信服超融合HCI6.8.0R2滚动热升级至HCI6.9.1

PS:滚动热升级没有业务影响,集群内主机逐台升级,会自动迁移运行中的虚拟机至其他主机; 整体巡检加上升级完成大概要三个小时的时间。如果在升级过程中,有跨集群迁移的任务,需要先停掉,不然无法…

excel将文本型数字转变为数值型数字

问题导入:复制数字到excel表格中,但是表格中数字显示为文本,且无法通过常规方法转变为可进行四则运算的数字。例如:在i3单元格中输入常规的转换方法仍然报错。在j3单元格中输入ISTEXT(H3)显示h3单元格确实为文本。 解决办法&#…

记录:网鼎杯2024赛前热身WEB01

目录扫描,发现上传点,判断可能存在文件上传漏洞,并根据文件后缀判断网站开发语言为php 编写蚁剑一句话木马直接上传 蚁剑连接 这里生成 的flag是随机的,因为烽火台反作弊会随机生成环境,在一顿查找后,在hom…

自动驾驶系列—激光雷达点云数据在自动驾驶场景中的深度应用

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

Leetcode 柱状图中最大的矩形

h 是右边界&#xff0c;连续多个高度递增的柱子&#xff0c;如果遇到下一个 h < 栈顶元素(是最大的元素&#xff0c;单调递增栈)&#xff0c;那么会不断出栈来更新计算最大面积。 并非是一次性计算出最大面积的&#xff0c;很重要的一点是while (!stack.isEmpty()这一部分的…

使用Docker启动的Redis容器使用的配置文件路径等问题以及Python使用clickhouse_driver操作clickhouse数据库

一、使用Docker启动的Redis容器使用的配置文件路径等问题 1.docker启动的redis使用的配置文件路径是什么 使用docker搭建redis服务&#xff0c;本身redis启动的时候可以指定配置文件的&#xff0c; redis-server /指定配置文件路径/redis.conf。 但手上也没有一个redis配置文件…

SpringCloud无介绍快使用,sentinel服务熔断功能与持久化(二十四)

TOC 问题背景 从零开始学springcloud微服务项目 注意事项&#xff1a; 约定 > 配置 > 编码IDEA版本2021.1这个项目&#xff0c;我分了很多篇章&#xff0c;每篇文章一个操作步骤&#xff0c;目的是显得更简单明了controller调service&#xff0c;service调dao默认安装ngi…

JavaEE进阶----18.<Mybatis补充($和#的区别+数据库连接池)>

详解了 1.$和#的区别 2.数据库连接池。 3.简单了解MySQL企业开发规范 一、Mybatis面试题&#xff1a;$和#的区别是什么&#xff1f; MyBatis 参数赋值有两种方式&#xff0c;咱们前面使用了 #{} 进行赋值&#xff0c;接下来我们看下二者的区别。 1.1 #是预编译SQL&#xff0c;$…

序列化问题记录:Jackson 与 Fastjson 的注解

前言 Java 后端开发中&#xff0c;我们经常需要处理 JSON 序列化和反序列化的问题。Spring 框架默认使用 Jackson 作为 JSON 处理库&#xff0c;但在某些情况下&#xff0c;我们也可能会使用 Fastjson 来处理特定的序列化需求。由于这两种库的注解不完全兼容&#xff0c;因此在…

springboot扩展点都有哪些?

在Spring Boot中&#xff0c;扩展点指的是能够自定义或增强Spring Boot功能的机制。这些扩展点允许开发者在Spring Boot的基础设施之上做定制化配置、行为修改或增强。Spring Boot主要有以下几类扩展点&#xff1a; 1. ApplicationRunner 和 CommandLineRunner 这两个接口允许…

网络运输层之(1)TCP连接管理

网络运输层之(1)TCP连接管理 Author: Once Day Date: 2024年10月22日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客…

【四】企业级JavaScript开发开发者控制台

多行输入 通常&#xff0c;当我们向控制台输入一行代码后&#xff0c;按 Enter&#xff0c;这行代码就会立即执行。 如果想要插入多行代码&#xff0c;请按 ShiftEnter 来进行换行。这样就可以输入长片段的 JavaScript 代码了。 总结 开发者工具允许我们查看错误、执行命令、…

【python爬虫课程设计】天气预报——分类数据爬取+数据可视化

一、选题的背景 随着人们对天气的关注逐渐增加&#xff0c;天气预报数据的获取与可视化成为了当今的热门话题&#xff0c;天气预报我们每天都会关注&#xff0c;天气情况会影响到我们日常的增减衣物、出行安排等。每天的气温、相对湿度、降水量以及风向风速是关注的焦点。通过…

【Linux】线程互斥与同步,生产消费模型(超详解)

目录 线程互斥 进程线程间的互斥相关背景概念 数据不一致问题 锁 深度理解锁 原理角度理解&#xff1a; 实现角度理解&#xff1a; 线程同步 条件变量 测试代码 生产消费模型 生产消费模型概念 编写生产消费模型 BlockingQueue &#xff08;1&#xff09;创建生产…

Dell服务器导入idrac 授权文件 (适用iDRAC7、iDRAC8、iDRAC9)

iDRAC Enterprise、iDRAC Datacenter 和 CMC Enterprise 的 30 天试用许可证,供熟悉高级功能集,例如使用虚拟控制台等 OpenManage Enterprise Advanced 或 Advanced+ 许可证支持高级功能,例如自动部署、服务器配置合规性和激活可用插件,如 OpenManage Enterprise Power Ma…