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'.