论坛首页> 三共建设

GeoEast-iEco软件平台和国产数据库openGauss进行快速适配

GeoEast-iEco软件平台系统的底层数据平台采用了基于数据库驱动器的兼容访问架构,具备原生的快速替换数据库厂商的特征。GeoEast-iEco软件平台系统针对基于PG访问协议的数据库厂商具有良好的适应性和替换性。以国产数据库openGauss为例子进行适配,其调整内容包含数据库驱动层和部署工具层,以最小范围的调整快速适配基于国产数据库厂商的应用场景。


一、数据库部署

GeoEast V4.x系统的数据库目前采用的PG9.6gaussdb3采用的是9.2的内核,其客户端和服务器的通讯协议差异较小。gasssdb5需要更高版本的C库,部分依赖库缺失,目前操作系统离线安装升级的方式行不通,因此采用gaussdb3进行适配。本次采用的极简单机版。

1、包下载

① openGauss开源社区下载对应平台的安装包。

通过https://opengauss.org/zh/download/登录openGauss开源社区,选择对应平台的极简版安装包。

② 检查安装包。

解压安装包,检查安装目录及文件是否齐全。在安装包所在目录执行以下命令:

tar -jxf openGauss-3.1.1-CentOS-64bit.tar.bz2

2、服务器配置

① 修改/etc/selinux/config文件中的“SELINUX”值为“disabled”

a.使用VIM打开config文件。

vim /etc/selinux/config

b. 修改“SELINUX”的值“disabled”

SELINUX=disabled

② 重新启动操作系统。

reboot

③ 检查防火墙是否关闭。

systemctl status firewalld

a.若防火墙状态显示为active (running),则表示防火墙未关闭,

b.若防火墙状态显示为inactive (dead),则无需再关闭防火墙。

关闭防火墙。

systemctl disable firewalld.service

systemctl stop firewalld.service

④ 设置字符集参数

a.将各数据库节点的字符集设置为相同的字符集,可以在/etc/profile文件中添加“export LANG=XXX”XXXUnicode编码)。

vim /etc/profile

b.关闭RemoveIPC

在各数据库节点上,关闭RemoveIPCCentOS操作系统默认为关闭,可以跳过该步骤。

修改/etc/systemd/logind.conf文件中的“RemoveIPC”值为“no”

使用VIM打开logind.conf文件。

vim  /etc/systemd/logind.conf

修改“RemoveIPC”值为“no”

RemoveIPC=no

3、添加系统用户

① 添加opengauss用户

useradd opengauss

② 添加opengauss用户密码

passwd 111111

③ 将文件夹/opt/software/openGauss赋予opengauss权限

chown -R opengauss:opengauss /opt/software/openGauss

系统内geoeast 属于gsge组的,opengauss系统默认会创建到gs组,这样会引起系统组的管理不一致问题,因此opengauss不能够创建gs用户

安装检查项:

  • 已完成用户组和普通用户的创建。
  • 所有服务器操作系统和网络均正常运行。
  • 普通用户必须有数据库包解压路径、安装路径的读、写和执行操作权限,并且安装路径必须为空。
  • 普通用户对下载的openGauss压缩包有执行权限。
  • 安装前请检查指定的openGauss端口是否被占用,如果被占用请更改端口或者停止当前使用端口进程。

4、安装

① 使用普通用户登录到openGauss包安装的主机,解压openGauss压缩包到安装目录。

tar -jxf openGauss-x.x.x-openEuler-64bit.tar.bz2 -C /opt/software/openGauss

② 假定解压包的路径为/opt/software/openGauss,进入解压后目录下的simpleInstall

cd /opt/software/openGauss/simpleInstall

③ 执行install.sh脚本安装openGauss

sh install.sh -w " Gauss123456 “ –p 5632 &&source ~/.bashrc

问题1:报错 limit,数据库启动不起来

.bashrc ulimit -n 1000000

ulimit -a系统下设置的是204800,修改ulimit –n 204800即可

注释:这个问题不仅仅存在与opengauss数据库的部署上,在大规模集群和高并发场景下,PG等相同内核的数据库均有这个问题,DBA在部署时候,要关注这个问题。

5、Demo创建了postgres的初始

a.Gauss节点gsql登录和操作

gsql -d postgres -p 5632

createdb postgre -p 5632

createdb ndp -p 5632

b.guass节点psql登录

此处需要切换postgrecsh,source .cshrc才可以连接。

一、gauss服务器部署

GeoEastV4.x提供了高度集成的工具buildDB来部署数据库结构,gauss数据库具有自己的特性,部分功能无法正常执行,部分程序和脚本需要根据数据库类型进行调整。

问题1admin1用户无法创建

用户密码必须8位三种字符。

不支持superuser,其他权限需要授权。

数据库需要修改owner

问题2:其他节点连接gauss数据库,系统报错Forbid remote connection with trust method!

修改配置文件

Postgresql.conf

开放listen_addresses="*"

Pg_hba.conf

需要调整原来的trust认证方式为md5认证方式;

重启数据库

问题3:客户端无法连接服务器:

3.1 Python 数据库客户端连接采用库:

采用psycopg2-2.9.6
如果:报错undefined symbol QencryptPasswordConn

可能是由于Pg客户端版本太低 psycopg2需要较高的客户端libpq

pg12编译可以通过.

3.2 采用C Libpq登录,采用pg9.6客户端即可。    
QT.PRO
INCLUDEPATH+= $(PGHOME)/include
LIBS += -L$(PGHOME)/lib -lpq

问题4SQL的部分函数支持不友好。

Gauss数据库在对含有nextval()函数的SQL,执行不友好。仅exec能够获取返回的char*

问题4会引起Builddb出错:

4.1 pg9.6服务端的扩展插件在gaussdb上无法运行,其源码编译包需要对python等库进行编译,dev包目前还未释放,定制插件编译可能消耗较多时间。需要调整服务端对路径的创建,个人建议可以采用python脚本或者shell脚本进行创建。

4.2需要调整创建tablespaceuserschema;的接口和sql脚本。

GaussSQL脚本调整:

替换TABLESPACE等关键词

替换USING INDEX等关键词

外键部分需要替换,可参考sqlite脚本,后期会添加guass_sql脚本文件夹.

可以将脚本调整为psycopg2能够直接执行的简单脚本

问题5:登录GeoEast系统报错,显示数据源,不显示数据库。

是由于用户认证失败引起的,可以强行修改连接用户。通过cpool进行连入。

Geoeast认证登录cpool修改

问题6GeoEast批量写入记录失败

GeoEast 在对bdo,bo对象批量写入数据异常,仅能写入一条记录

Bdo对象构建时候,调用sequence ,由于执行接口调用原因,返回值均为0

可以修改自增sequence 或者是调整接口。

调整代码后。能够创建成功。



采用批量导入工具,对dqzj_train数据进行了导入测试,各类型数据均能够正常加载到GeoEast系统里。

在国产数据库上进行部署和测试,对于大规模并发,AI运维等场景下,Gauss提供了一种可能性。

全部回复

gauss数据库技术架构

下载

 文件名称 openGauss 技术架构.pptx
 描述
 文件大小 8505 Kbytes
 下载次数:  422 次