云数据库 GAUSSDB-Linux下配置数据源:操作步骤
操作步骤
- 获取unixODBC源码包。
获取参考地址:https://sourceforge.net/projects/unixodbc/files/unixODBC
下载后请先按照社区提供的完整性校验算法进行完整性校验。
- 安装unixODBC。如果机器上已经安装了其他版本的unixODBC,可以直接覆盖安装。
目前不支持unixODBC-2.2.1版本。以unixODBC-2.3.0版本为例,在客户端执行如下命令安装unixODBC。默认安装到“/usr/local”目录下,生成数据源文件到“/usr/local/etc”目录下,库文件生成在“/usr/local/lib”目录。
tar zxvf unixODBC-2.3.0.tar.gz cd unixODBC-2.3.0 #修改configure文件,找到LIB_VERSION #将它的值修改为"1:0:0",这样将编译出*.so.1的动态库,与psqlodbcw.so的依赖关系相同。 vim configure ./configure --enable-gui=no #如果要在ARM服务器上编译,请追加一个configure参数: --build=aarch64-unknown-linux-gnu make #安装可能需要root权限 make install
- 替换客户端 GaussDB 驱动程序。
将GaussDB-Kernel-VxxxRxxxCxx-xxxxx-64bit-Odbc.tar.gz解压。解压后会得到两个文件夹:lib与odbc,在odbc文件夹中还会有一个lib文件夹。将解压后得到的/lib文件夹与/odbc/lib文件夹中的所有动态库都拷贝到“/usr/local/lib”目录下。
- 配置数据源。
- 配置ODBC驱动文件。
在“/usr/local/etc/odbcinst.ini”文件中追加以下内容。
[GaussMPP] Driver64=/usr/local/lib/psqlodbcw.so setup=/usr/local/lib/psqlodbcw.so
odbcinst.ini文件中的配置参数说明如表1所示。
- 配置数据源文件。
在“/usr/local/etc/odbc.ini ”文件中追加以下内容。
[gaussdb] 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]
数据源的名称。
[gaussdb]
Driver
驱动名,对应odbcinst.ini中的DriverName。
Driver=DRIVER_N
Servername
服务器的IP地址。可配置多个IP地址。
Servername=127.0.0.1
Database
要连接的数据库的名称。
Database=postgres
Username
数据库用户名称。
Username=omm
Password
数据库用户密码。
Password=
说明:ODBC驱动本身已经对内存密码进行过清理,以保证用户密码在连接后不会再在内存中保留。
但是如果配置了此参数,由于UnixODBC对数据源文件等进行缓存,可能导致密码长期保留在内存中。
推荐在应用程序连接时,将密码传递给相应API,而非写在数据源配置文件中。同时连接成功后,应当及时清理保存密码的内存段。
注意:配置文件中填写密码时,需要遵循http规则:- 字符应当采用URL编码规范,如"!"应写作"%21","%"应写作"%25",因此应当注意特殊处理%。
- "+"会被替换为空格" "。
Port
服务器的端口号。当开启负载均衡时,可配置多个端口号,且需与配置的多IP一一对应。如果开启负载均衡配置多个IP时,仍只配置一个端口号,则默认所有IP共有同一个端口号,即为配置的端口号。
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相关问题可以注意这个开关。
ForExtensionConnector=1
ConnectionExtraInfo
GUC参数connection_info(参见connection_info)中显示驱动部署路径和进程属主用户的开关。
ConnectionExtraInfo=1
说明:默认值为0。当设置为1时,ODBC驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在connection_info参数(参见connection_info)里;同时可以在PG_STAT_ACTIVITY和PGXC_STAT_ACTIVITY中查询到。
BoolAsChar
设置为Yes是,Bools值将会映射为SQL_CHAR。如不设置将会映射为SQL_BIT。
BoolsAsChar = Yes
RowVersioning
当尝试更新一行数据时,设置为Yes会允许应用检测数据有没有被其他用户进行修改。
RowVersioning=Yes
ShowSystemTables
驱动将会默认系统表格为普通SQL表格。
ShowSystemTables=Yes
AutoBalance
ODBC控制负载均衡的开关,默认值为0,0为关闭,开启为1。即为除1以外均不生效。
AutoBalance=1
RefreshCNListTime
开启负载均衡时可配置该参数,该值为刷新CN列表的时间,默认值为10,整数型。
RefreshCNListTime=5
Priority
开启负载均衡时可配置该参数,默认值为0,0为关闭,开启为1。即为除1以外均不生效。当Priority开启时,应用程序发起的所有连接优先发送到配置文件中配置的CN上,当配置的CN全部不可用时,连接才会发送到剩余的CN上。
Priority=1
UsingEip
开启负载均衡时可配置该参数,默认值为0,0为关闭,1为开启。即除1以外均不生效。当Priority开启时,应用程序发起的所有连接优先发送到配置文件中配置的CN上,当配置的CN全部不可用时,连接才会发送到剩余的CN上。
UsingEip=1
TcpUserTimeout
在支持TCP_USER_TIMEOUT套接字选项的操作系统上,指定传输的数据在TCP连接被强制关闭之前可以保持未确认状态的最大时长。0值表示使用系统缺省。通过Unix域套接字做的链接忽略这个参数。单位为毫秒,默认为0。
TcpUserTimeout=5000
其中关于Sslmode的选项的允许值,具体信息见下表:
表3 sslmode的可选项及其描述 sslmode
是否会启用SSL加密
描述
disable
否
不使用SSL安全连接。
allow
可能
如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。
prefer
可能
如果数据库支持,那么首选使用SSL安全加密连接,但不验证数据库服务器的真实性。
require
是
必须使用SSL安全连接,但是只做了 数据加密 ,而并不验证数据库服务器的真实性。
verify-ca
是
必须使用SSL安全连接,并且验证数据库是否具有可信证书机构签发的证书。
verify-full
是
必须使用SSL安全连接,在verify-ca的验证范围之外,同时验证数据库所在主机的主机名是否与证书内容一致。如果不一致,需要使用root用户修改/etc/hosts文件,将连接的数据库节点的IP地址和主机名加入。
- 配置ODBC驱动文件。