GBase 8s数据库随系统启动、自重启配置

近期的客户想实现数据库自重启功能(即故障后自动重启),该功能需要在自动启动的基础上进行改进。
关于systemd方式实现自启动的方法可参考之前的文档:https://gbasedbt.com/index.php/archives/161/
以下仍是通过systemd方式实现GBase 8s数据库的自启动、自重启与关闭。
注意:自启动、自重启仅适用于单机,而不要用于集群环境
适用于操作系统: RHEL7/CENTOS7, 以及基于RHEL7内核的系统。

systemd需要的两个配置文件目录为

1,service 文件所在位置 /usr/lib/systemd/system/
2,service 的环境配置文件位置 /etc/sysconfig/

1, 在/usr/lib/systemd/system/目录下创建 gbasedbt.service文件

主要的参数:
Type配置为forking,以便可以调用Restart
如果不需要重启,Type配置为oneshot,且把Restart/RestartSec注释掉
特别注意必须配置EnvironmentFile环境变量文件

# /usr/lib/systemd/system/gbasedbt.service
# 注:以下中文注释用于理解
[Unit]
# Wants:需要的服务
# After:在指定的服务正常启动后才会启动
Description=GBase 8s Database Server
Documentation=file:/opt/gbase/release/en_us/0333
Wants=network-online.target
After=network.target network-online.target
 
[Service]
# Type:oneshot只有在该服务的主服务进程退出之后,systemd 才会认为该服务启动完成,才会开始启动后继单元。
#       forking守护进程(服务)在启动时会转入后台运行
# User:使用启动的用户
# Group:使用启动的用户组
# EnvironmentFile:使用的环境变量文件,以Key=Value的方式存储,需要注意的是 '$' 变量不扩展
# ExecStart:启动命令,需要绝对路径
# ExecStop:关闭命令,需要绝对路径
# Restart:always 只要不是通过systemctl stop来停止服务,任何情况下都必须要重启服务
# RestartSec:systemctl检测到异常,重启等待时长,单位是秒
#Type=oneshot
Type=forking
User=gbasedbt
Group=gbasedbt
RemainAfterExit=yes
EnvironmentFile=-/etc/sysconfig/gbasedbt_env
ExecStart=/opt/gbase/bin/oninit
ExecStop=/opt/gbase/bin/onmode -ky
Restart=always
RestartSec=60
 
[Install]
WantedBy=multi-user.target

说明:
[Unit] 区块:启动顺序与依赖关系
[Service] 区块:启动行为
[Install] 区块:定义如何安装这个配置文件,即怎么做到开机启动。

2, 在/etc/sysconfig目录下创建环境变量文件 gbasedbt_env

环境变量文件以Key=Value的方式存储,需要注意的是 '$' 变量不扩展,需要先扩展为实际值
数据库将使用该文件中的环境启动数据库

# /etc/sysconfig/gbasedbt_env
# 以Key=Value的方式存储,需要注意的是 '$' 变量不扩展
GBASEDBTDIR=/opt/gbase
GBASEDBTSERVER=gbase01
ONCONFIG=onconfig.gbase01
# PATH应该将常用的PATH目录加入
PATH=/opt/gbase/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
# 以下环境变量按实际扩展  
# LD_LIBRARY_PATH加入常用的目录
LD_LIBRARY_PATH=/opt/gbase/lib:/opt/gbase/lib/cli:/opt/gbase/lib/esql:/opt/gbase/lib/incl:/usr/lib:/usr/lib64
DB_LOCALE=zh_CN.utf8
CLIENT_LOCALE=zh_CN.utf8
SERVER_LOCALE=zh_CN.utf8
GL_USEGLU=1
DBDATE=Y4MD-

注意:以上环境变量需要依据实际使用情况添加

3, 管理gbasedbt服务

systemd加入gbasedbt服务,并设置gbasedbtd服务随系统启动

# systemctl enable gbasedbt

启动gbasedbt服务(数据库应未启动)

# systemctl start gbasedbt

检查gbasedbtd状态

# systemctl status gbasedbt

关闭gbasedbt服务

# systemctl stop gbasedbt

关闭gbasedbt服务的自启动

# systemctl disable gbasedbt

如果数据库使用onmode -ky正常关闭,需要使用systemctl restart方式重启数据库

# systemctl restart gbasedbt

如果数据库不是使用systemctl stop或者正常关闭,如使用kill -9或者onclean -ky或者异常关闭时,将在RestartSec指定的时间后自动启动数据库。如下:

[root@192 ~]# systemctl status gbasedbt
● gbasedbt.service - GBase 8s Database Server
   Loaded: loaded (/usr/lib/systemd/system/gbasedbt.service; enabled; vendor preset: disabled)
   Active: activating (auto-restart) (Result: signal) since Wed 2024-07-31 16:56:58 CST; 47s ago
     Docs: file:/opt/gbase/release/en_us/0333
  Process: 2707 ExecStart=/opt/gbase/bin/oninit (code=exited, status=0/SUCCESS)
 Main PID: 2709 (code=killed, signal=KILL)

7月 31 16:56:58 192.168.80.151 systemd[1]: gbasedbt.service: Failed with result 'signal'.

标签: systemd, 自启动, GBase, 自重启

添加新评论