最近公司在做一个军用机场跑道异物检测设备,但是由于各国之间的关系紧张,军放要求我们软件做一个国产数据库的适配;
经查阅才知道这个翰高数据库用的内核为postgresql,然后再这个基础上做了一定修改与优化。
废话不多说,安排!
下载安装包
本文以hgdb4.5.6-see-centos7-x86-64-20210303.rpm版本为列进行安装讲解
开启防火墙
#开启防火墙 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
#rpm 安装 rpm -ivh hgdb4.5.6-see-centos7-x86-64-20210303.rpm --nodeps #忽略依赖包进行安装 --force #强制安装
注:数据库所需的依赖包都已经封装至安装包内,所以当遇到依赖包错误的时候可以先进行忽 略或者进行强制安装,安装成功后再设置环境变量
环境变量首先考虑使用数据库安装目录下这个文件: etc目录下的:highgodb.env文件
vi /root/.bashrc #添加 source /opt/HighGo4.5.6-see/etc/highgodb.env #使.bashrc内容在当前窗口生效: source /root/.bashrc
使用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
数据库配置以下参数,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
运用官方提供的连接工具连接测试
输入主机用户名和密码连接
至此数据库安装连接成功。
刚用这个工具有点不适应,创建的表会默认到库下模式中的public模式下;
数据库与模式的关系:模式(schema)是对数据库(database)逻辑分割。一个数据库包含一个或多个已命名的模式,模式又包含表。模式还可以包含其它对象, 包括数据类型、函数、操作符等。同一个对象名可以在不同的模式里使用而不会导致冲突;和数据库不同,模式不是严格分离的:只要有权限,一个用户可以访问他所连接的数据库中的任意模式中的对象。
由于公司项目本身运用的MySQL,很多MySQL的数据类型及函数在highgo中也没有(因为本人没用过postgresql),所有不做过多讲解与说明;
接下来就是表结构及基础数据同步,
同步是个体力活,提下在同步中遇见的几个坑:
driver-class-name: com.highgo.jdbc.Driver db-type: postgresql url: jdbc:highgo://ip:5866/dbname username: sysdba password: High@123
选择依赖是需要注意jdk的版本
<dependency> <groupId>com.highgo</groupId> <artifactId>HgdbJdbc</artifactId> <version>6.0.6.jre8</version> </dependency>
启动项目测试