数据仓库服务 GAUSSDB(DWS)-Linux下配置数据源:操作步骤

时间:2024-12-09 15:13:07

操作步骤

  1. 获取unixODBC源码包。

    获取参考地址:https://sourceforge.net/projects/unixodbc/files/unixODBC/2.3.0/unixODBC-2.3.0.tar.gz/download

  2. 目前不支持unixODBC-2.2.1版本。以unixODBC-2.3.0版本为例,在客户端执行如下命令安装unixODBC。安装时通过--prefix=[your_path]指定安装目录,生成数据源文件到 “[your_path]/etc”目录下,库文件生成在“[your_path]/lib”目录。

    tar zxvf unixODBC-2.3.0.tar.gz
    cd unixODBC-2.3.0
    #修改configure文件(如果不存在,那么请修改configure.ac),找到LIB_VERSION
    #将它的值修改为"1:0:0",这样将编译出*.so.1的动态库,与psqlodbcw.so的依赖关系相同。
    vim configure
    
    ./configure --enable-gui=no --prefix=[your_path] #如果要在TaiShan服务器上编译,请追加一个configure参数: --build=aarch64-unknown-linux-gnu 
    make
    make install

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

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

    将dws_8.x.x_odbc_driver_for_xxx_xxx.zip解压,在“/dws_8.x.x_odbc_driver_for_xxx_xxx/odbc/lib”目录下得到“psqlodbcw.la”和“psqlodbcw.so”两个文件。

  4. 配置数据源。

    1. 配置ODBC驱动文件。

      在“[your_path]/etc/odbcinst.ini”文件中追加以下内容。

      [GaussMPP]
      Driver64=[your_path]/lib/odbc/psqlodbcw.so
      setup=[your_path]/lib/odbc/psqlodbcw.so

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

      表1 odbcinst.ini文件配置参数

      参数

      描述

      示例

      [DriverName]

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

      [DRIVER_N]

      Driver64

      驱动动态库的路径。

      Driver64=/xxx/odbc/lib/odbc/psqlodbcw.so

      setup

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

      setup=/xxx/odbc/lib/odbc/psqlodbcw.so

    2. 配置数据源文件。

      在“[your_path]/etc/odbc.ini ”文件中追加以下内容。

      [MPPODBC]
      Driver=GaussMPP
      Servername=10.10.0.13(数据库Server IP)
      Database=gaussdb  (数据库名)
      Username=dbadmin  (数据库用户名)
      Password=  (数据库用户密码)
      Port=8000 (数据库监听端口)
      Sslmode=allow

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

      表2 odbc.ini文件配置参数

      参数

      描述

      示例

      [DSN]

      数据源的名称。

      [MPPODBC]

      Driver

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

      Driver=DRIVER_N

      Servername

      服务器的IP地址。

      Servername=10.145.130.26

      Database

      要连接的数据库的名称。

      Database=gaussdb

      Username

      数据库用户名称。

      Username=dbadmin

      Password

      数据库用户密码。

      Password=

      说明:

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

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

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

      Port

      服务器的端口号。

      Port=8000

      Sslmode

      开启SSL模式。

      Sslmode=allow

      UseServerSidePrepare

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

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

      UseServerSidePrepare=1

      UseBatchProtocol

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

      当此值为0时,不使用批量查询协议(主要用于与早期数据库版本通信兼容)。

      当此值为1,并且数据库support_batch_bind参数存在且为on时,将打开批量查询协议。

      UseBatchProtocol=1

      ConnectionExtraInfo

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

      ConnectionExtraInfo=1

      说明:

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

      ForExtensionConnector

      ETL工具性能优化参数,可进行内存优化,降低对端的CN内存占用,避免因CN内存使用过多导致系统不稳定。

      可选值0或者1,默认为0,表示不开启优化项。

      请勿在数据库系统之外的其他业务中配置此参数,以免影响业务的正确性。

      ForExtensionConnector=1

      KeepDisallowPremature

      当UseDeclareFetch=1时,应用程序调用SQLPrepare后调用SQLNumResultCols、SQLDescribeCol或SQLColAttribute获取结果集列信息时,SQL语句中的游标是否具有with hold属性。

      可选值0或者1,0表示具有with hold属性,1表示不具有with hold属性,默认为0。

      KeepDisallowPremature=1

      说明:

      UseServerSidePrepare=1时,KeepDisallowPremature参数不生效,使用时需要指定UseServerSidePrepare为0,例如:UseDeclareFetch=1

      KeepDisallowPremature=1

      UseServerSidePrepare=0

      其中关于sslmode的选项的允许值,具体信息见下表:

      表3 sslmode的可选项及其描述

      sslmode

      是否会启用SSL加密

      描述

      disable

      不使用SSL安全连接。

      allow

      可能

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

      prefer

      可能

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

      require

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

      verify-ca

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

      verify-full

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

  5. SSL模式

    如果需要使用SSL证书连接,那么请将GaussDB(DWS)安装包中的SSLCERT的证书包解压,在shell环境下,执行“source sslcert_env.sh”,即在当前会话完成证书的默认位置的部署。

    或者手动声明如下环境变量,同时保证client.key*系列文件为600权限:

    export PGSSLCERT="/YOUR/PATH/OF/client.crt" #请修改该路径到client.crt的绝对路径
    export PGSSLKEY="/YOUR/PATH/OF/client.key"  #请修改该路径到client.key的绝对路径

    同时将数据源中的Sslmode选项调整至“verify-ca”。

  6. 将客户端所在主机的IP网段加入GaussDB(DWS)的安全组规则,确保客户端主机与GaussDB(DWS)网络互通。
  7. 配置环境变量。

    vim ~/.bashrc

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

    export LD_LIBRARY_PATH=[your_path]/lib/:$LD_LIBRARY_PATH
    export OD BCS YSINI=[your_path]/etc
    export ODBCINI=[your_path]/etc/odbc.ini

    麒麟OS环境中,此处不建议追加LD_LIBRARY_PATH,可能造成libssl.so动态库冲突。集群9.1.0最新版本中已增加rpath,不需要LD_LIBRARY_PATH即可找到依赖。

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

    source ~/.bashrc

support.huaweicloud.com/devg-910-dws/dws_04_0119.html