云数据库 GAUSSDB-Linux下配置数据源:操作步骤

时间:2024-11-02 18:50:21

操作步骤

  1. 获取unixODBC源码包。

    获取参考地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz

    下载后请先按照社区提供的完整性校验算法进行完整性校验。下载https://www.unixodbc.org/unixODBC-2.3.7.tar.gz.md5,查看MD5值,对比MD5值是否与源码包一致。

  2. 安装unixODBC。如果机器上已经安装了其他版本的unixODBC,可以直接覆盖安装。

    以unixODBC-2.3.7版本为例,在客户端执行如下命令安装unixODBC。
    tar zxvf unixODBC-2.3.7.tar.gz
    cd unixODBC-2.3.7
    
    ./configure --enable-gui=no #如果要在ARM服务器上编译,请追加一个configure参数: --build=aarch64-unknown-linux-gnu 
    make
    #安装可能需要root权限
    make install
    • 目前不支持unixODBC-2.2.1版本。
    • 默认安装在“/usr/local”目录下,生成数据源文件在 “/usr/local/etc”目录下,库文件生成在“/usr/local/lib”目录。
    • 通过编译含有--enable-fastvalidate=yes选项的unixODBC来获得更高性能。但此选项可能会导致向ODBC API传递无效句柄的应用程序发生故障,而不是返回SQL_INVALID_HANDLE错误。

  3. 替换客户端 GaussDB 驱动程序。

    将GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Odbc.tar.gz解压。解压后会得到两个文件夹:lib与odbc,在odbc文件夹中还会有一个lib文件夹。将解压后得到的/lib文件夹与/odbc/lib文件夹中的所有动态库都复制到“/usr/local/lib”目录下。

  4. 配置数据源。

    1. 配置ODBC驱动文件。

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

      [GaussMPP]
      Driver64=/usr/local/lib/psqlodbcw.so
      setup=/usr/local/lib/psqlodbcw.so

      odbcinst.ini文件中的配置参数说明如表1所示。

      表1 odbcinst.ini文件配置参数

      参数

      描述

      示例

      [DriverName]

      驱动器名称,对应数据源DSN中的驱动名。

      [DRIVER_N]

      Driver64

      驱动动态库的路径。

      Driver64=/usr/local/lib/psqlodbcw.so

      setup

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

      setup=/usr/local/lib/psqlodbcw.so

    2. 配置数据源文件。

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

      [MPPODBC]
      Driver=GaussMPP
      Servername=127.0.0.1 #数据库Server IP
      Database=postgres  #数据库名
      Username=omm  #数据库用户名
      Password=   #数据库用户密码
      Port=8000  #数据库侦听端口
      Sslmode=allow

      odbc.ini文件配置参数说明如表2所示。

      表2 odbc.ini文件配置参数

      参数

      描述

      示例

      [DSN]

      数据源的名称。

      [MPPODBC]

      Driver

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

      Driver=DRIVER_N

      Servername

      服务器的IP地址。可配置多个IP地址。

      Servername=127.0.0.1

      Database

      要连接的数据库的名称。

      Database=postgres

      Username

      数据库用户名称。

      Username=omm

      Password

      数据库用户密码。

      说明:

      ODBC驱动本身已经对内存密码进行过清理,以保证用户密码在连接后不会再在内存中保留。

      但是如果配置了此参数,由于UnixODBC对数据源文件等进行缓存,可能导致密码长期保留在内存中。

      推荐在应用程序连接时,将密码传递给相应API,而非写在数据源配置文件中。同时连接成功后,应当及时清理保存密码的内存段。

      须知:
      配置文件中填写密码时,需要遵循http规则:
      1. 字符应当采用URL编码规范,如"!"应写作"%21","%"应写作"%25",因此应当特别注意字符。
      2. "+"会被替换为空格" "。

      Password=********

      Port

      服务器的端口号。

      Port=8000

      Sslmode

      开启SSL模式

      Sslmode=allow

      Debug

      设置为1时,将会打印psqlodbc驱动的mylog,日志生成目录为/tmp/。设置为0时则不会生成。

      Debug=1

      UseServerSidePrepare

      是否开启数据库端扩展查询协议。

      可选值0或1,默认为1,表示打开扩展查询协议。

      UseServerSidePrepare=1

      UseBatchProtocol

      是否开启批量查询协议(打开可提高DML性能)。可选值0或者1,默认为1。

      • 当此值为0时,不使用批量查询协议(主要用于与早期数据库版本通信兼容)。
      • 当此值为1,并且数据库support_batch_bind参数存在且为on时,将打开批量查询协议。

      UseBatchProtocol=1

      ForExtensionConnector

      这个开关控制着savepoint是否发送,savepoint相关问题可以注意这个开关,默认值为1。取值为0,发送savepoint,取值为1,不发送savepoint。

      ForExtensionConnector=1

      ConnectionExtraInfo

      GUC参数connection_info中显示驱动部署路径和进程属主用户的开关。

      说明:

      默认值为0。当设置为1时,ODBC驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在GUC参数connection_info里,同时可以在PG_STAT_ACTIVITY中查询到。

      ConnectionExtraInfo=1

      BoolAsChar

      设置为Yes,Bools值将会映射为SQL_CHAR。如不设置将会映射为SQL_BIT。默认值为Yes。

      BoolsAsChar = Yes

      RowVersioning

      当尝试更新一行数据时,设置为Yes会允许应用检测数据有没有被其他用户进行修改。默认值为No。

      RowVersioning=Yes

      ShowSystemTables

      设置为Yes,驱动将默认系统表格视为普通SQL表格。默认值为No。

      ShowSystemTables=Yes

      MaxCacheQueries

      控制每个连接缓存的预编译语句个数,如果设置为0,则不开启客户端预编译语句缓存池。设置为大于4096的值会限制为4096。如果执行过的语句个数超过MaxCacheQueries设置的上限,则淘汰最近最少使用的语句。默认值为0。

      MaxCacheQueries=128

      MaxCacheSizeMiB

      控制每个连接缓存的预编译语句总大小,在MaxCacheQueries大于0时生效。如果缓存的语句总长度大于MaxCacheSizeMiB则淘汰最近最少使用的语句。单位为MB,设置为大于4096的值会限制为4096。默认值为1。

      MaxCacheSizeMiB=10

      TcpUserTimeout

      在支持TCP_USER_TIMEOUT套接字选项的操作系统上,指定传输的数据在TCP连接被强制关闭之前可以保持未确认状态的最大时长。0表示使用系统缺省。通过Unix域套接字做的连接忽略这个参数。单位为毫秒,默认为0。

      TcpUserTimeout=5000

      其中关于Sslmode的选项的允许值,具体信息如表3 Sslmode的可选项及其描述所示。

      表3 Sslmode的可选项及其描述

      Sslmode

      是否会启用SSL加密

      描述

      disable

      不使用SSL安全连接。

      allow

      可能

      如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。

      prefer

      可能

      如果数据库支持,那么首选使用SSL安全加密连接,但不验证数据库服务器的真实性。

      require

      必须使用SSL安全连接,但是只做了 数据加密 ,并不验证数据库服务器的真实性。

      verify-ca

      必须使用SSL安全连接,并且验证数据库是否具有可信证书机构签发的证书。

      verify-full

      必须使用SSL安全连接,在verify-ca的验证范围之外,同时验证数据库所在主机的主机名是否与证书内容一致。GaussDB不支持此模式。

      用户通过ODBC连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了服务端和客户端所需要的证书和私钥文件,关于证书等文件的获取请参考Openssl相关文档和命令。

  5. 在客户端配置环境变量。

    vim ~/.bashrc

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

    export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
    export OD BCS YSINI=/usr/local/etc
    export ODBCINI=/usr/local/etc/odbc.ini

  6. 执行如下命令使设置生效。

    source ~/.bashrc

  7. 测试连接。

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

    • 如果显示如下信息,表明配置正确,连接成功。
      +---------------------------------------+
      | Connected!                            |
      |                                       |
      | sql-statement                         |
      | help [tablename]                      |
      | quit                                  |
      |                                       |
      +---------------------------------------+
    • 若显示ERROR信息,则表明配置错误。请检查上述配置是否正确。
    目前通过ODBC连接数据库时,会如下设置内核参数:
    SET extra_float_digits = 2;
    SET DateStyle = 'ISO';

    这些参数可能会导致ODBC客户端的行为与gsql客户端的行为不一致,例如,Date数据显示方式、浮点数精度表示。如果实际期望和这些配置不符,建议在ODBC应用代码中显式设定这些参数。

support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-12-0099.html