Linux系统下 DM8 通过ODBC建dblink

由于达梦的dblink,尤其是在读写分离集群中,数据流量是通过心跳网段实现的。现实业务中,为避免业务高峰期带来的压力,导致集群状态出现波动。我们建议即使是两台达梦数据库之间也通过ODBC的方式来创建dblink。
这样做有以下几种好处。

  • 数据流量通过ODBC,相当于是正常的业务流量,不会对集群状态产生影响。
  • 达梦的dblink服务是通过心跳网段实现的。因此每增加一个节点的dblink信息,dmmal文件中就会增加一个节点。如果业务复杂,你会得到一个异常复杂的dmmal文件。这是很不利于后期运维的。
  • 同时因为它需要认dmmal文件,因此每新加一条链路,就需要重启数据库服务。对于很多的业务来说,加一条链路就需要申请停机时间,这是难以接受的。
  • 达梦数据库的小版本较多,由于各个业务间的小版本可能存在差异,很有可能导致dblink无法实现功能。之前曾出现过相差四个月的版本间的数据库,dblink无法返回数据。

以下是具体操作步骤。

  • 安装gcc
yum install gcc*
  • 安装ODBC

    很多帖子与网站都有源码安装的教程与讲解。包括达梦官网的技术文档中记录的也是源码安装。这里我更推荐使用yum安装。不仅仅是安装更为便捷。同时,源码安装有时候会无法避免安装不规范的事情发生,或者下载的源码有问题,这是在生产环境中不希望看到的。目前的主流操作系统的本地镜像就已经可以支持yum直接安装。我们也就没有必要舍近求远,迎难而上。ODBC这样的组件安装与配置,我们还是应该追求简易,快速,可批量化操作。

yum install unixODBC-devel-2.3.7-2.ky10.aarch64
yum install unixODBC-2.3.7-2.ky10.aarch64
  • ODBC参数文件配置
    如果选择yum安装,ODBC的配置文件的绝对路径为/etc/odbc.ini和/etc/odbcinst.ini.
vim odbcinst.ini

[DM8]
Description = dm odbc
Driver = /达梦安装位置/bin/libdodbc.so

vim odbc.ini

[对应实例名]
Description = DM8 dsn
Driver = DM8      ---此处可以写odbcinst.ini里[]内的内容,也可以选择直接写libdodbc.so 的绝对路径
SERVER =127.0.0.1   对应实例的IP地址
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236     对应实例的端口号

其中,odbcinst.ini的主要作用就是为odbc.ini的Driver参数指明路径。在测试中,我们发现,odbc.ini中的driver路径也可以直接写libdodbc.so的绝对路径。也是可以被服务认到的。

  • 更改权限
    大多数的软件安装都逃不开权限这个问题。ODBC也不例外,但是在这里需要格外注意,并且操作时需要额外谨慎的事情是。参数文件在/etc路径下面。或出现操作不当而更改系统其他组件权限的问题。解决权限问题的方法有很多,这里我建议使用软链接的方式,来避免由于操作不当而导致的其他不可预测的问题。这里选用软链接的方式也是因为符合前文中提到的,配置ODBC,我们应该追求简易,快速,可批量化操作。
    同时,选择软链接还有一个随之而来的有点。如果,我们不选择软链接,要让达梦数据库认到这个参数文件。我们需要重新配置dmdba用户的环境变量,虽然不难,但是烦。我这个人就很懒,能少打一个字我都开心。如果在这里配置了软链接,就可以直接把链接写到环境变量中的LD_LIBRARY_PATH路径下。省去配置环境变量的步骤。
cd /etc
Chmod 755 odbc.ini
Chmod 755 odbcinst..ini
mkdir -p /usr/local/etc/
cd /usr/local
chmod -R 755 etc/
ln -s /etc/odbc.ini /达梦安装路径/bin/odbc.ini
ln -s /etc/odbcinst.ini /达梦安装路径/bin/odbcinst.ini
  • 测试ODBC
    切换至dmdba用户
su - dmdba
isql -v [对应实例名]

如果你获得了如下截图在这里插入图片描述

那么第一阶段的准备工作就结束了。

  • 创建dblink
 create link "SYSDBA"."TEST" connect 'ODBC' with "sa" identified by "123456789" using '对应实例名';
  • 测试dblink
    在以往的dblink测试中,我倾向于使用
select 1 from dual@dblink;

这种方式简单直接

可惜的是,odbc这里并不支持,odbc的查询中更希望查到一张真实有效的表。
所以,这一部分,大家各显神通吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值