Vastbase初试-单机安装

示例版本为2.2 Build15

1.环境准备

1.1 创建目录和用户

useradd -m vastbase
passwd vastbase
id vastbase

如果创建有问题可以删除:

userdel vastbase
cat /etc/passwd | grep vastbase

创建软件安装目录和数据目录:

mkdir -p /vastdata/app/vastbase/2.2.15
mkdir -p /vastdata/data/vastbase
chown -R vastbase:vastbase /vastdata

1.2 安装依赖

本次以centos7.x为例吗,需要安装如下依赖:

yum install -y zlib-devel libaio libuuid readline-devel krb5-libs libicu libxslt tcl perl openldap pam openssl-devel libxml2 bzip2

注:此外libnsl仅在openEuler+x86环境中需要安装。

对于centos,需要安装python3.6。
python依赖如下:

yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make

创建python安装路径,以已创建过vastbase用户后为例:

mkdir -p /home/vastbase/python

然后在如下下载地址中找到需要的版本,如本次的3.6.15:

https://www.python.org/downloads/
https://www.python.org/downloads/release/python-3615/

上传至服务器后解压:

cd /home/vastbase/python
tar -xf Python-3.6.15.tar.xz
cd Python-3.6.15

运行configure脚本,为编译安装做准备。

./configure --prefix=/home/vastbase/python --enable-shared    

注:--prefix是Python的安装路径,--with-ssl-default-suites=openssl --with-python3是未识别选项,后续对其进行验证,本次不使用。
--enable-optimizations参数会编译安装到/usr/local/bin下且不用配软链接或环境变量。
--with-ensurepip=install是安装pip。

编译安装python3:

make&make install

本次安装发现--prefix选项未生效,仍旧分散安装在不同位置,应该不影响安装,后面我们再处理。

拷贝库文件:

cp /usr/lib64/libpython3.6m.so.1.0 /usr/local/lib64/
cp /usr/lib64/libpython3.6m.so.1.0 /usr/lib/

1.3 关闭防火墙和selinux

确保防火墙已关闭且不自启。

systemctl status firewalld.service

确保selinux已禁用。

sestatus

或者使用如下命令:

getenforce

临时修改命令:

setenforce 0

永久关闭SELINUX需要修改文件。

vi /etc/selinux/config

将 SELINUX=enforcing 修改为 SELINUX=disabled,reboot后生效。

1.4 IPC参数配置

CentOS操作系统默认是关闭的,所以可跳过此配置。
但是如果不添加参数,后续安装过程会报错,所以还是加一下。

vi /etc/systemd/logind.conf

添加RemoveIPC=no。注意默认是注释掉的,记得打开。

vi /usr/lib/systemd/system/systemd-logind.service

查看是否已经设置了RemoveIPC=no,没有则修改或添加配置项RemoveIPC=no。
或者直接追加写入也可以:

echo "RemoveIPC=no" >> /etc/systemd/logind.conf
echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service

重新加载配置生效:

systemctl daemon-reload
systemctl restart systemd-logind

1.5 内核参数配置

编辑文件:

vim /etc/sysctl.conf

在结尾写入如下内容:

fs.aio-max-nr=1048576
fs.file-max= 76724600
kernel.sem = 4096 2097152000 4096 5120
kernel.shmall = 4075365         # pages
kernel.shmmax =   10432937984   # bytes,  50% MEM or higher
kernel.shmmni = 819200
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 4194304
net.core.somaxconn = 4096
net.ipv4.tcp_fin_timeout = 5
vm.dirty_background_bytes = 409600000 
vm.dirty_expire_centisecs = 3000
vm.dirty_ratio = 80
vm.dirty_writeback_centisecs = 50
vm.overcommit_memory = 0
vm.swappiness = 0
net.ipv4.ip_local_port_range = 40000 65535
fs.nr_open = 20480000

应结合实际内存重新计算内核参数设置示例中 kernel.shmall 和 kernel.shmmax 的值。

设置内核参数前需参考:

https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V3.0.8/1/8c92f8f53fc043378d572773717aa2cc#137b1b0c-45d4-4821-8c7a-adf433efc7b4

其中关键配置项含义如下,在配置时应着重关注:

  • kernel.shmmax参数用于设置单个共享内存段可拥有的最大尺寸。等于系统内存*0.5,单位:Byte。确保数据库(如 PostgreSQL、Oracle)的共享内存需求(如 SGA 或 shared_buffers)能完整容纳在一个共享内存段中。若设置过小,系统需创建多个内存段,可能导致性能下降。应略大于数据库的共享内存需求(如 PostgreSQL 的 shared_buffers)。
  • kernel.shmall 参数用于设置一个共享内存段内可以分配的共享内存页的最大数量。
    共享内存页是共享内存段中的最小可管理单元。
    实际总共享内存大小为 shmall × 页大小(通常为 4KB)。
    此参数限制所有进程共享内存的总使用量,防止系统内存被过度占用。
    建议取值为:系统内存*0.8/PAGE_SIZE
    其中:0.8 为推荐配置,单位为 Byte。PAGE_SIZE 可通过 getconf PAGE_SIZE 获取。

重载配置:

sysctl -p

1.6 可选配置

设置字符集参数:
将各数据库节点的字符集设置为相同的字符集,方便日常运维和管理:

vi/etc/profile

增加:export LANG=XXX(XXX为Unicode编码)
如不配置LANG,则默认安装时为en_US.utf8

设置时区和时间:
查看操作系统当前的时区

timedatectl

如果显示是上海则正常。

将数据库各节点的时区设置为相同时区(root 用户执行)
将/usr/share/zoneinfo/目录下的时区文件拷贝为/etc/localtime文件,从而设置时区和时间。

cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime

集群环境下应配置NTP。

此外还需要配置swap空间。

2. 交互安装

将软件包及目录授权后,切换至vastbase用户,进入上传目录解压:

su - vastbase
cd /app/database/vastbase
tar -xvf Vastbase-installer-2.2_Build15-centos_7-x86_64.tar.gz

执行安装脚本:

cd /app/database/vastbase/vastbase-installer
./vastbase_installer

首先是安装环境检查的步骤,如果通过则回车OK,如果有问题会终止。
例如IPC检查:

IPC parameter check
---------------

A problem with the show-session parameter setting has been detected, please modify it as follows:
---please explicitly set RemoveIPC=no in the /usr/lib/systemd/system/systemd-logind.service

根据提示,IPC配置不满足安全要求,修改建议:

  • 在/etc/systemd/logind.conf中添加RemoveIPC=no
  • 在/usr/lib/systemd/system/systemd-login.service中增加RemoveIPC=no

下一步询问是否实例化安装,我们选Y:

Whether to instantiate the database (Y/N): Y

下一步选择安装类型(选2,自定义)。

下一步设置超级管理员密码,需要输入密码,并再次输入密码确认(设置的密码最少包含8个字符,最多包含16个字符。密码由大小写字母加数字组成。
下一步设置密钥(选1,使用数据库初始化用户密码)。

下一步设置数据库安软件装路径(此例中为/vastdata/app/vastbase/2.2.15),或者输入<回车>使用默认路径(默认路径:/home/vastbase/local/vastbase))。
此处软件安装目录不能与数据库目录相同,目录相同时会自动创建子目录用于分开存放软件和数据。
下一步设置数据路径(此例中为/vastdata/data/vastbase)。

下一步设置监听端口,我们使用默认值5432即可。
下一步设置最大连接数,默认500,此例中我们设置为2000。
下一步设置共享内存,建议主机内存的1/4,单位MB;此例中我们设置为5120。
下一步设置兼容模式,此例中我们选PG。

之后打印安装概要,然后开始安装。
安装完成后会打印相关信息,可以将密码保存下来。
根据提示,执行source ~/.bashrc和vb_ctl start可立即启动数据库,我们配置完license后再启动,否则启动会报授权问题。

编辑数据库参数文件/vastdata/data/vastbase/postgresql.conf,添加参数license_path,指向授权文件:

license_path = '/home/vastbase/.license/vastbase_license'

然后拷贝文件到此目录:

cd ~
mkdir .license
cp /app/database/vastbase/Vastbase_license_20250331 /home/vastbase/.license/vastbase_license

然后生效环境变量并启动

source ~/.bashrc
vb_ctl start

本次启动出现如下报错:

[vastbase@MYSQL_MHA_test3 .license]$ vb_ctl start
[2025-04-15 14:40:05.225][13225][][vb_ctl]: vb_ctl started,datadir is /vastdata/data/vastbase
[2025-04-15 14:40:05.369][13225][][vb_ctl]: waiting for server to start...
.0 LOG:  [Alarm Module]can not read GAUSS_WARNING_TYPE env.

0 LOG:  [Alarm Module]Host Name: MYSQL_MHA_test3

0 LOG:  [Alarm Module]Host IP: MYSQL_MHA_test3. Copy hostname directly in case of taking 10s to use 'gethostbyname' when /etc/hosts does not contain <HOST IP>

0 LOG:  [Alarm Module]Get ENV GS_CLUSTER_NAME failed!

0 LOG:  [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 57

0 WARNING:  failed to open feature control file, please check whether it exists: FileName=gaussdb.version, Errno=2, Errmessage=No such file or directory.
0 WARNING:  failed to parse feature control file: gaussdb.version.
0 WARNING:  Failed to load the product control file, so gaussdb cannot distinguish product version.
The core dump path is an invalid directory
 0 [BACKEND] LOG:  the config file /vastdata/data/vastbase/postgresql.conf verify start.
2025-04-15 14:40:05.652 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  the config file /vastdata/data/vastbase/postgresql.conf verify success.
2025-04-15 14:40:05.654 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  license expired,please replace license. Otherwise database will be shutdown. license info: Customer:'vastbase', Begins On:'2024-11-14 16:19:05', Expires On:'2025-03-31 16:21:22', MAC:''
2025-04-15 14:40:05.654 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  when starting as multi_standby mode, we couldn't support data replicaton.
2025-04-15 14:40:05.654 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  base_page_saved_interval is 400, ori is 400.
2025-04-15 14:40:05.654 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [REDO] LOG:  Recovery parallelism, cpu count = 8, max = 8, actual = 8
2025-04-15 14:40:05.654 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [REDO] LOG:  ConfigRecoveryParallelism, true_max_recovery_parallelism:8, max_recovery_parallelism:8
gaussdb.state does not exist, and skipt setting since it is optional.2025-04-15 14:40:05.667 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  [Alarm Module]can not read GAUSS_WARNING_TYPE env.

2025-04-15 14:40:05.667 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  [Alarm Module]Host Name: MYSQL_MHA_test3

2025-04-15 14:40:05.667 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  [Alarm Module]Host IP: MYSQL_MHA_test3. Copy hostname directly in case of taking 10s to use 'gethostbyname' when /etc/hosts does not contain <HOST IP>

2025-04-15 14:40:05.667 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  [Alarm Module]Get ENV GS_CLUSTER_NAME failed!

2025-04-15 14:40:05.668 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 57

2025-04-15 14:40:05.672 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  loaded library "security_plugin"
2025-04-15 14:40:05.672 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] WARNING:  could not create any HA TCP/IP sockets
2025-04-15 14:40:05.672 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] WARNING:  could not create any HA TCP/IP sockets
2025-04-15 14:40:05.683 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  InitNuma numaNodeNum: 1 numa_distribute_mode: none inheritThreadPool: 0.
2025-04-15 14:40:05.683 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  reserved memory for backend threads is: 220 MB
2025-04-15 14:40:05.683 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  reserved memory for WAL buffers is: 128 MB
2025-04-15 14:40:05.683 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  Set max backend reserve memory is: 348 MB, max dynamic memory is: 3464 MB
2025-04-15 14:40:05.683 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  shared memory 8907 Mbytes, memory context 3812 Mbytes, max process memory 13232 Mbytes
2025-04-15 14:40:05.684 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [MEM_CTL] LOG:  PGSharedMemoryCreate(): ShmemBase=0x7f79f960b000, totalsize=9339918912, freeoffset=56
2025-04-15 14:40:06.649 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [CACHE] LOG:  set data cache  size(402653184)
2025-04-15 14:40:06.777 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] FATAL:  could not create semaphores: No space left on device
2025-04-15 14:40:06.777 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] DETAIL:  Failed system call was semget(5432124, 17, 03600).
2025-04-15 14:40:06.777 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] HINT:  This error does *not* mean that you have run out of disk space.  It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded.  You need to raise the respective kernel parameter.  Alternatively, reduce openGauss's consumption of semaphores by reducing its max_connections parameter.
        The openGauss documentation contains more information about configuring your system for openGauss.
2025-04-15 14:40:06.930 [unknown] [unknown] localhost 140171795288832 0[0:0#0]  0 [BACKEND] LOG:  FiniNuma allocIndex: 0.
.[2025-04-15 14:40:07.933][13225][][vb_ctl]: waitpid 13228 failed, exitstatus is 256, ret is 2

[2025-04-15 14:40:07.933][13225][][vb_ctl]: stopped waiting
[2025-04-15 14:40:07.933][13225][][vb_ctl]: could not start server
Examine the log output.

我们发现核心问题是:

FATAL: could not create semaphores: No space left on device
DETAIL: Failed system call was semget(5432124, 17, 03600)

根据提示,当超过最大信号量集(SEMMNI)的系统限制或系统范围内的最大信号量(SEMMNS)时,就会发生这种情况。您需要提高相应的内核参数。或者,通过减少openGauss的max_connections参数来减少其信号量的消耗。

Linux 内核在编译时会对信号量参数设置 隐式上限,不同发行版的默认限制不同。例如:CentOS 7 默认限制: SEMMNI 最大值为 32,768,SEMMNS 最大值为 2,147,483,647。
过高的值可能会导致系统资源不足。过低的值可能不满足应用需求。因此需要合理设置。
我们将SEMMNI从512000修改为5120后解决。之后显示server started。

3.登录数据库

vsql -r -d vastbase

其余使用方式与pg类似。

创建管理员:

CREATE USER hxxxxn WITH SYSADMIN password "Hxxxxn@123";

查看hba配置文件,发现对于所有远程服务器都是开放的,我们通过dbeaver连接:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容