南大通用GBase 8a 集群V95版本和根脱离,和/tmp有关的参数

V95版本已经不再依赖操作系统root用户,用户一般为其划分了单独的分区。而数据库的一些默认参数,还使用了一些非gbase用户的目录,比如/tmp。

如果用户由于安全加固原因,或者根目录空间很小,可以将数据库使用/tmp的参数修改到数据库分区目录下。

如下假设数据库的独立分区为/opt/gbase,数据库安装到了这个目录下。

先将数据库所有节点停止。

1、创建数据库的tmp目录

注意,不要将tmp目录改到数据库的服务目录下,比如/opt/gbase/gcluster下, 因为如果出现节点替换,该目录将无法自动创建,导致替换后的服务运行异常(tmpdir目录不存在),导致失败。

mkdir /opt/gbase/tmp
chown gbase:gbase /opt/gbase/tmp
chmod -R 700 /opt/gbase/tmp

该目录,将只允许gbase用户进行操作。

2、修改数据库配置参数

涉及到如下2个配置文件,其中管理节点为
/opt/gbase/gcluster/config/gbase_8a_gcluster.cnf

数据节点为
/opt/gbase/gnode/config/gbase_8a_gbase.cnf

涉及的第一个参数为
socket=/tmp/gcluster_5258.sock
或者
socker=/tmp/gbase_8a_5050.sock

这个参数占用磁盘空间极小,一般是0字节长度。每个配置文件里有2处要修改。

第二个参数是要额外增加,其用于在运行期间,保存一些中间结果,其占用的空间【可能】极大,比如join出现笛卡尔积时,中间结果集会有几个TB或更多。
tmpdir=/opt/gbase/tmp

如下是原始参数

修改后如下

修改完成数据库每个节点的配置,然后重启集群。

可以检查socket文件

残存问题:

1、gcmonit_1001.lock还在/tmp目录下,尚未找到如何修改。 其大小也是0字节。空间影响可以忽略,但占用了一个文件。