openGauss是GaussDB的开源版,从官网下载即可。

这里只是为了测试一些基本功能,所以只下载了极简版。下面记录下安装步骤和遇到的问题。

部署

GaussDB安装不能用root用户,先新建一个专用用户gaussdb,执行命令groupadd gaussdb && useradd -d /home/gaussdb -m gaussdb -g gaussdb
解压安装包,执行命令tar -jxvf openGauss-2.0.0-CentOS-64bit.tar.bz2 -C gaussdb-2.0.0
然后进入simpleInstall目录,执行sh install.sh -w xx命令进行安装。

如果上述流程正常,则GaussDB安装初步完成。但是我没有这么顺利,遇到些问题。

问题1

执行install.sh命令时,报错SEMMNI参数设置不对,错误信息如下:
On systemwide basis, the maximum number of SEMMNI is not correct. the current SEMMNI value is: 128. Please check it.

解决
SEMMNI是在/proc/sys/kernel/sem文件中配置的,修改下就好了,需要注意的是修改方式不能直接vim,需要用echo命令写入,否则会写入不成功。
执行命令echo 250 32000 32 2048 > /proc/sys/kernel/sem

安装成功之后,需要先验证下能否正常使用,比较安装不报错和能正常使用是两回事。

执行gsql -d postgres -p 5432,其中端口5432是默认端口,具体端口信息可以在${GAUSSDB_HOME}/data/single_node/postgresql.conf中查看。

又报错了。。

问题2

是openssl的问题,错误信息如下:
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

解决
执行openssl version查看当前openssl的版本,我的版本是1.0.2,需要先将openssl升级到1.1,如果还报上面的错,在执行如下命令:

1
2
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

这个问题解决完就可以正常使用了,一些常用命令有\c切换数据库,\l查看数据库、\dt查看表、\d tablename查看表结构。

远程连接

管理员帐号无法进行远程连接,新建个用户用于测试远程连接功能,新建用户命令如下:

1
2
3
4
5
6
7
CREATE USER test PASSWORD 'Test@123';
# 将 school库赋权给test用户
GRANT ALL PRIVILEGES ON DATABASE school to test;
# 更改test角色
ALTER ROLE test CREATEDB;
# 赋予用户权限
GRANT ALL PRIVILEGES To test;

使用新建的用户连接测试,执行命令gsql -h xx.xx.xx.xx -d school -U test -p 5432 -r
报错无法连接,报权限错误,执行命令gs_guc set -N all -I all -h "host all test 192.168.xx.xx/32 sha256",悲催的是又报错了,错误信息如下:

1
2
3
realpath(/home/gaussdb/gaussdb-2.0.0/bin/cluster_static_config) failed : 没有那个文件或目录!
The gs_guc run with the following arguments: [gs_guc -N all -I all -h host all jack 192.168.xx.xx/32 sha256 set ].
gs_guc: malloc 0

之所以没有这个文件是因为极简版中很多命令都没有,比如gs_om

极简版少很多命令文件怎么解决,我只能从新安装个企业版?好麻烦。突然想到在搜索gs_guc这个命令的时候,它修改的是pg_hba.conf这个配置文件,我是不是可以绕过gs_guc命令直接修改配置文件就可以解决,立马去实践。

pg_hba.conf${GAUSSDB_HOME}/data/single_node中,通过vim修改,增加host all all 192.168.xx.xx/32 sha256
修改完之后重启下服务就行,搞笑的事情发生了,重启服务需要用到gs_om命令,可是没有咋办。。。

极简版是通过执行install.sh命令进行安装启动的,那么这个里面应该有启动命令,果然发现了,极简版的启停命令为:

1
2
gs_ctl start -D /home/gaussdb/gaussdb-2.0.0/data/single_node -Z single_node
gs_ctl stop -D /home/gaussdb/gaussdb-2.0.0/data/single_node -Z single_node

终于搞定了,可以远程连接了。

JDBC连接测试

代码用官方的就行,加个依赖包,官方也提供了。
关键代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 创建数据库连接
public static Connection GetConnection(String username, String passwd) {
String driver = "org.postgresql.Driver";
String sourceURL = "jdbc:postgresql://192.168.xx.xx:5432/school?useUnicode=true&characterEncoding=utf8";
Connection conn = null;
try {
//加载数据库驱动。
Class.forName(driver).newInstance();
} catch (Exception e) {
e.printStackTrace();
return null;
}

try {
//创建数据库连接。
conn = DriverManager.getConnection(sourceURL, username, passwd);
System.out.println("Connection succeed!");
} catch (Exception e) {
e.printStackTrace();
return null;
}

return conn;
};

幸运之想

整个安装测试过程比较坎坷但也很幸运,所遇的问题都能比较简单,比较容易搞定。

安装使用过程中遇到些问题,有的问题比较普遍可以通过搜索引擎解决,但是有些问题比较独特,无法通过搜索引擎解决,此时就需要我们有解决问题的能力,这个能力从何而来,我认为能力是从思路中而来,而思路又是从经验见识中而来。所以呢还是那句老话,遇到问题不要慌,要多想想,要记住一点,问题肯定是能解决的,只是有的问题解决完就没有了,而有的问题解决完一个又会出现N个。

也许现在说这些都是风凉话,但现在想想如果当时解决远程连接问题时,没有去多想下,可能就直接更换企业版,然后安装部署,遇到新的问题继续解决问题。
但是我很庆幸我没有立马去更换企业版,而是多想了一步,并靠着自己的经验把遇到的问题给解决了,节省了一些时间也增加了自己独立解决问题的信心。