1 背景

最近公司在做一个军用机场跑道异物检测设备,但是由于各国之间的关系紧张,军放要求我们软件做一个国产数据库的适配;
经查阅才知道这个翰高数据库用的内核为postgresql,然后再这个基础上做了一定修改与优化。
废话不多说,安排!

2 数据库安装

下载安装包
本文以hgdb4.5.6-see-centos7-x86-64-20210303.rpm版本为列进行安装讲解

2.1 环境准备

开启防火墙

#开启防火墙
systemctl start firewalld.service 
systemctl stop firewalld.service 
systemctl disable firewalld.service

开发端口
翰高端口默认为5866,自定义需要修改参数

#临时添加5866端口 
firewall-cmd --add-port=5866/tcp 
#永久添加5866端口 
firewall-cmd --permanent --add-port=5866/tcp 
#重载生效
firewall-cmd --reload 

#查看是否开放5866端口
firewall-cmd --list-ports | grep 5866 

查询时区

#查询时区
timedatectl
#修改时区为上海 东八区
timedatectl set-timezone Asia/Shanghai

2.2 数据库安装

#rpm 安装
rpm -ivh hgdb4.5.6-see-centos7-x86-64-20210303.rpm 
--nodeps #忽略依赖包进行安装 
--force #强制安装

注:数据库所需的依赖包都已经封装至安装包内,所以当遇到依赖包错误的时候可以先进行忽 略或者进行强制安装,安装成功后再设置环境变量

2.3 设置环境

环境变量首先考虑使用数据库安装目录下这个文件: etc目录下的:highgodb.env文件

vi /root/.bashrc
#添加 source /opt/HighGo4.5.6-see/etc/highgodb.env
#使.bashrc内容在当前窗口生效:
source /root/.bashrc

2.4 初始化数据库

使用root用户初始化数据库, 初始化过程会输入6次密码,三个数据库管理员各两次,初始化命令如下:

initdb -D $PGDATA -e sm4 -c "echo 12345678" > /opt/HighGo4.5.6-see/bin/initdb.log

注意:密码至少需要8个字符,大小写加特殊字符组成。

#将安装目录etc下server.crt和server.key文件拷贝至$PGDATA目录下
cp /opt/HighGo4.5.2-see/etc/server.* $PGDATA
#修改server.*文件权限
chmod 0600 $PGDATA/server.*
#启动数据库
pg_ctl start

2.5 数据库配置

数据库配置以下参数,sysdba用户修改,重启数据库生效。

psql -d highgo -U sysdba 
alter system set listen_addresses = '*'; 
alter system set max_connections = 800; #数据库连接数,请按照实际情况设置 
alter system set shared_buffers = '4GB'; #数据库使用的内存,设置为物理内存*25%

安全版用户密码有效时间默认为7天,如需修改密码有效时间,
需要使用syssso用户登录数据库并 执行以下语句,修改完成后,有效期参数自动生效

psql -U syssso -d highgo 
highgo=> select set_secure_param('hg_idcheck.pwdvaliduntil','365'); #修改密码 有效期为365天,请根据实际情况修改

审计功能默认是开启的,可使用syssao用户登录数据库并执行以下语句,修改完成后,重启生效。

psql -U syssao -d highgo 
highgo=> select set_audit_param('hg_audit','off');
#退出
highgo=> \q
#重启数据库,使参数生效
pg_ctl restart -mf

修改文件

vi $PGDATA/pg_hba.conf 
#在ipv4下追加
host	 all	 all	 0.0.0.0/0 	sm3
#重启数据库,使参数生效
pg_ctl restart -mf

2.6 连接测试

运用官方提供的连接工具连接测试
输入主机用户名和密码连接
在这里插入图片描述
在这里插入图片描述
至此数据库安装连接成功。
刚用这个工具有点不适应,创建的表会默认到库下模式中的public模式下;

数据库与模式的关系:模式(schema)是对数据库(database)逻辑分割。一个数据库包含一个或多个已命名的模式,模式又包含表。模式还可以包含其它对象, 包括数据类型、函数、操作符等。同一个对象名可以在不同的模式里使用而不会导致冲突;和数据库不同,模式不是严格分离的:只要有权限,一个用户可以访问他所连接的数据库中的任意模式中的对象。

3 代码适配

3.1 数据库同步

由于公司项目本身运用的MySQL,很多MySQL的数据类型及函数在highgo中也没有(因为本人没用过postgresql),所有不做过多讲解与说明;
接下来就是表结构及基础数据同步,
同步是个体力活,提下在同步中遇见的几个坑:

  • 因为在Navicat中的DDL字段是用“ ’ ” 单引号 扩起来的,highgo数据库不支持;字段备注COMMENT也不支持;所有比较痛苦;
  • 将Navicat的sql转成postgresql的SQL,本人在转的时候遇见 “;” 分号换行的情况 highgo也不支持;
  • 还有就是执行多条SQL时 需要 全选中在执行;

3.2 配置文件修改

driver-class-name: com.highgo.jdbc.Driver
db-type: postgresql
url: jdbc:highgo://ip:5866/dbname
username: sysdba
password: High@123

3.3 添加依赖

选择依赖是需要注意jdk的版本

 <dependency>
   	  <groupId>com.highgo</groupId>
      <artifactId>HgdbJdbc</artifactId>
      <version>6.0.6.jre8</version>
 </dependency>

启动项目测试

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐