GBase 8s
安装配置
文章

GBase8s数据库服务开机自启动的三种方法

发表于2026-05-18 14:18:1655次浏览8个评论

本文方案适用于REDHAT7/CENTOS7、SUSE12等。

前置准备

1.  确认GBase 8s已安装完成,且能正常手动启动(手动启动命令:su - gbasedbt -c "oninit"),若手动启动失败,需先排查数据库安装问题,再进行自启动配置。

2.  确认GBase 8s安装路径(默认路径为/opt/gbase)、数据库管理用户(默认用户为gbasedbt),。

3.  操作需使用root权限,避免权限不足导致配置失败。

4.  本文配置方案仅适用于单机环境。SCC、HAR、RHAC集群之节点启动顺序有特殊要求,可以依据本方案做微调。

方法一:服务配置法(支持故障自重启)

systemd是现代Linux系统的服务管理核心,通过配置服务文件可实现GBase 8s的开机自启、故障自重启,且便于后续服务管理,步骤如下:

步骤1:创建GBase 8s环境变量文件

环境变量文件用于指定GBase 8s的安装路径、配置文件、字符集等参数,确保服务启动时环境变量正确加载,避免启动失败。

1.  使用root账户进入环境变量配置目录:

cd /etc/sysconfig/

2.  创建环境变量文件gbasedbt_env,并写入配置(根据实际安装路径和需求调整参数):

vi gbasedbt_env

3.  输入以下内容:

# GBase 8s环境变量配置
GBASEDBTDIR=/opt/gbase              # 数据库安装根路径
GBASEDBTSERVER=gbaseserver          # 数据库服务器名称
ONCONFIG=onconfig.gbaseserver       # 数据库配置文件名
# 系统路径配置,确保能找到数据库执行命令
PATH=/opt/gbase/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
# 动态链接库路径,避免启动时缺失依赖
LD_LIBRARY_PATH=/opt/gbase/lib:/opt/gbase/lib/cli:/opt/gbase/lib/esql:/usr/lib:/usr/lib64
# 字符集配置,根据实际业务需求调整(默认UTF-8)
DB_LOCALE=zh_CN.utf8
CLIENT_LOCALE=zh_CN.utf8
SERVER_LOCALE=zh_CN.utf8
GL_USEGLU=1
DBDATE=Y4MD-

4.  保存并退出(vi编辑器:按Esc,输入:wq回车)。

步骤2:创建systemd服务文件

服务文件用于定义GBase 8s服务的启动规则、依赖关系、启动/停止命令等,systemd通过该文件管理数据库服务。

1.  进入systemd服务文件目录:

cd /usr/lib/systemd/system/

2.  创建服务文件gbasedbt.service

vi gbasedbt.service

3.  写入以下配置(根据实际路径调整ExecStartExecStop路径,注释可保留):

[Unit]
Description=GBase 8s Database Server  #  服务描述
Wants=network-online.target  # 依赖网络服务(确保网络启动后再启动数据库)
After=network.target network-online.target   # 启动顺序:在网络服务之后启动

[Service]
Type=forking  # 守护进程模式,支持故障自重启
User=gbasedbt  # 启动数据库的用户(默认gbasedbt,不可修改)
Group=gbasedbt  # 启动数据库的用户组(默认gbasedbt,不可修改)
RemainAfterExit=yes  # 服务启动后保持运行状态
EnvironmentFile=-/etc/sysconfig/gbasedbt_env   # 加载环境变量文件(-表示文件不存在也不报错)
ExecStart=/opt/gbase/bin/oninit  # 数据库启动命令(绝对路径,oninit为默认启动命令)
ExecStop=/opt/gbase/bin/onmode -ky  # 数据库停止命令(安全关闭,不可修改参数)
Restart=always  # 故障自重启(非手动停止时,异常退出自动重启)
RestartSec=60  # 故障重启等待时间(单位:秒,避免频繁重启)

[Install]
WantedBy=multi-user.target  # 系统运行级别:多用户模式(服务器默认级别)

说明:若不需要故障自重启,可将Type=forking改为Type=oneshot,并注释掉RestartRestartSec两行。

4.  保存并退出vi编辑器。

步骤3:配置服务并设置开机自启

1.  重新加载systemd配置,使新创建的服务文件生效:

systemctl daemon-reload

2.  设置GBase 8s服务开机自启:

systemctl enable gbasedbt

3.  启动GBase 8s服务(若数据库已手动启动,可跳过此步骤):

systemctl start gbasedbt

4.  查看服务状态,确认启动成功:

systemctl status gbasedbt

若输出中显示active (running),则说明服务启动成功,开机自启配置生效。

方法二:开机启动脚本法

该方法通过修改系统开机启动脚本/etc/rc.d/rc.local,添加数据库启动命令,实现开机自启,步骤简单,适用于不支持systemd的旧版Linux系统,或快速临时配置。

步骤1:确认rc.local文件可执行

部分Linux系统默认rc.local文件不可执行,需先赋予执行权限:

chmod +x /etc/rc.d/rc.local

步骤2:添加数据库启动命令

1.  编辑rc.local文件:

vi /etc/rc.d/rc.local

2.  在文件末尾添加以下命令(根据实际环境调整环境变量文件路径和启动命令):

# 启动GBase 8s数据库(切换到gbasedbt用户,加载环境变量,执行启动命令)
su - gbasedbt -c ". /home/gbasedbt/profile.gbaseserver && oninit -vy"

说明:

/home/gbasedbt/profile.gbaseserver:GBase 8s的环境变量文件路径。

oninit -vy:带详细输出的启动命令,-v显示启动过程,-y非交互模式(避免启动时需要手动确认)。

3.  保存并退出vi编辑器。

步骤3:验证配置

1.  手动执行rc.local文件,测试数据库是否能正常启动:

/etc/rc.d/rc.local

2.  切换到gbasedbt用户,查看数据库状态:

su - gbasedbt
onstat -

若输出中显示On-Line,则说明配置生效,重启系统后数据库会自动启动。

方法三:crontab定时任务配置法(简易方法)

通过crontab的@reboot定时任务,实现系统重启后自动启动GBase 8s,步骤极简,适用于快速配置。

1.  切换到gbasedbt用户,编辑crontab定时任务:

su - gbasedbt
crontab -e

2.  在文件末尾添加以下内容(调整环境变量文件路径):

@reboot source /home/gbasedbt/profile.gbaseserver && oninit -vy

3.  保存并退出,重启系统后,数据库会自动启动,可通过onstat -命令验证。

开机自启验证方法

无论使用哪种方法,配置完成后,建议重启系统验证是否生效,步骤如下:

# 重启系统
reboot

# 系统重启后,查看数据库状态

# 切换到gbasedbt用户查看数据库状态,如果Online就是正常
su - gbasedbt
onstat -

若重启后,数据库状态为active (running)(systemd方式)或On-Line(onstat方式),则说明开机自启配置成功。

常见问题排查

问题1:systemd启动服务失败,提示“EnvironmentFile not found”

原因:环境变量文件路径错误,或文件未创建。

解决:确认gbasedbt_env文件路径与服务文件中EnvironmentFile配置一致,若文件不存在,重新创建并写入正确配置。

问题2:重启系统后,数据库未自动启动,systemctl status显示“inactive”

原因1:未执行systemctl enable gbasedbt,未设置开机自启。

解决1:执行systemctl enable gbasedbt,重新重启系统验证。

原因2:启动命令路径错误,或环境变量配置错误。

解决2:检查ExecStart路径(/opt/gbase/bin/oninit)是否正确,环境变量文件中GBASEDBTDIR是否与实际安装路径一致。

问题3:启动服务时,提示“permission denied”(权限不足)

原因:服务文件中UserGroup配置错误,或文件权限不足。

解决:确认服务文件中User=gbasedbtGroup=gbasedbt,并赋予服务文件和环境变量文件正确权限:

chmod 644 /usr/lib/systemd/system/gbasedbt.service
chmod 644 /etc/sysconfig/gbasedbt_env

评论

登录后才可以发表评论
用户头像
路路路发表于 2个月前
沙发
用户头像
路路路发表于 2个月前
学习
用户头像
路路路发表于 2个月前
用户头像
路路路发表于 2个月前
推荐
fm986发表于 2个月前
方法一多次测试没有成功,信息如下:

(1)创建实例
ENTER THE NUMBER OF DATA DBSPACES [Default:1]: 3

ENTER THE NUMBER OF TEMP DBSPACES [Default:1]: 3

Enter "Y" TO ENABLE ENVIRONMENT GL_USEGLU, OR ENTER "N" TO DISABLE: [Default:N]: y

INSTANCE SUMMARY:
Instance name: gbase01
GBase install directory: /opt/gbase
IP address & port: 192.168.10.88:9088
Character set: zh_CN.utf8
Logical log space size: 3000 MB
Physical log space size: 3000 MB
Smart LOB space size: 2030 MB
Temp DBSpace size: 2030 MB
Data path: /opt/gbase/gbase01_dbs
Data path free size: 495819 MB
The number of data DBSpace: 3
The number of temp DBSpace: 3
Environment GL_USEGLU: 1

(2)/etc/sysconfig创建gbasedbt_env
[root@abc sysconfig]# cat gbasedbt_env
# GBase 8s环境变量配置
GBASEDBTDIR=/opt/gbase # 数据库安装根路径
GBASEDBTSERVER=abc # 数据库服务器名称
ONCONFIG=onconfig.gbase01 # 数据库配置文件名
# 系统路径配置,确保能找到数据库执行命令
PATH=/opt/gbase/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
# 动态链接库路径,避免启动时缺失依赖
LD_LIBRARY_PATH=/opt/gbase/lib:/opt/gbase/incl/esql:/usr/lib:/usr/lib64
# 字符集配置,根据实际业务需求调整(默认UTF-8)
DB_LOCALE=zh_CN.utf8
CLIENT_LOCALE=zh_CN.utf8
SERVER_LOCALE=zh_CN.utf8
GL_USEGLU=1
DBDATE=Y4MD-
(3)创建systemd服务文件
[root@abc sysconfig]#
[root@abc sysconfig]# cd /usr/lib/systemd/system
[root@abc system]#
[root@abc system]#
[root@abc system]# cat gbasedbt.service
[Unit]
Description=GBase 8s Database Server # 服务描述
Wants=network-online.target # 依赖网络服务(确保网络启动后再启动数据库)
After=network.target network-online.target # 启动顺序:在网络服务之后启动

[Service]
Type=oneshot # 守护进程模式,支持故障自重启
User=gbasedbt # 启动数据库的用户(默认gbasedbt,不可修改)
Group=gbasedbt # 启动数据库的用户组(默认gbasedbt,不可修改)
RemainAfterExit=yes # 服务启动后保持运行状态
EnvironmentFile=-/etc/sysconfig/gbasedbt_env # 加载环境变量文件(-表示文件不存在也不报错)
ExecStart=/opt/gbase/bin/oninit # 数据库启动命令(绝对路径,oninit为默认启动命令)
ExecStop=/opt/gbase/bin/onmode -ky # 数据库停止命令(安全关闭,不可修改参数)
# Restart=always # 故障自重启(非手动停止时,异常退出自动重启)
# RestartSec=60 # 故障重启等待时间(单位:秒,避免频繁重启)

(4)执行systemctl status gbasedbt.service
用户头像
柒柒天晴发表于 2个月前
加油
用户头像
mittens发表于 1个月前
总结到位
gbase0001发表于 1个月前
感谢老师分享