kingbase注册linux系统服务开机自启
·
一般在”完全安装“单机数据库时,最后一步提示是否要注册系统服务,类似像以下这样的提示,用root用户执行root.sh脚本即可

但如果是一个已经运行的之前没有注册系统服务的数据库实例,如何注册呢?参考以下示例
1、初始化一个测试实例
初始化一个新的数据库实例,用于以下进行系统服务注册的测试,初始化完成后,必须要先完成数据库启动和停止步骤才会有sys_log目录,不然后续注册为系统服务后,用服务启动实例会失败报错找不到sys_log目录
01、初始化实例
[root@node1 ESV8C9B14]# su - kingbase
上一次登录:二 4月 15 17:27:34 CST 2025pts/0 上
[kingbase@node1 ~]$ cd /data/kingbase/ESV8C9B14
[kingbase@node1 ESV8C9B14]$ ./Server/bin/initdb -Usystem -D /data/kingbase/data_v8r69b14
数据库簇将使用本地化语言 "zh_CN.UTF-8"进行初始化.
默认的数据库编码已经相应的设置为 "UTF8".
属于此数据库系统的文件宿主为用户 "kingbase".
此用户也必须为服务器进程的宿主.
initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
缺省的文本搜索配置将会被设置到"simple"
字符串的比较区分大小写.
禁止为数据页生成校验和.
创建目录 /data/kingbase/data_v8r69b14 ... 成功
正在创建子目录 ... 成功
选择动态共享内存实现 ......posix
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
选择默认时区...PRC
创建配置文件 ... 成功
开始设置加密设备
正在初始化加密设备...成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
创建安全数据库...成功
加载安全数据库...成功
同步数据到磁盘...成功
initdb: 警告: enabling "trust" authentication for local connections
你可以通过编辑 sys_hba.conf 更改或你下次
执行 initdb 时使用 -A或者--auth-local和--auth-host选项.
成功。您现在可以用下面的命令开启数据库服务器:
./Server/bin/sys_ctl -D /data/kingbase/data_v8r69b14 -l 日志文件 start
02、启动数据库实例
[kingbase@node1 ESV8C9B14]$ ./Server/bin/sys_ctl start -D /data/kingbase/data_v8r69b14/
等待服务器进程启动 ....2025-04-15 18:12:12.411 CST [28444] LOG: 请尽快配置有效的归档命令做WAL日志文件的归档
2025-04-15 18:12:12.425 CST [28444] LOG: sepapower扩展初始化完成
2025-04-15 18:12:12.438 CST [28444] LOG: 正在启动 KingbaseES V008R006C009B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
2025-04-15 18:12:12.439 CST [28444] LOG: 正在监听IPv4地址"0.0.0.0",端口 54321
2025-04-15 18:12:12.439 CST [28444] LOG: 正在监听IPv6地址"::",端口 54321
2025-04-15 18:12:12.440 CST [28444] LOG: 在Unix套接字 "/tmp/.s.KINGBASE.54321"上侦听
2025-04-15 18:12:12.486 CST [28444] LOG: 日志输出重定向到日志收集进程
2025-04-15 18:12:12.486 CST [28444] HINT: 后续的日志输出将出现在目录 "sys_log"中.
完成
服务器进程已经启动
03、停止数据库实例
[kingbase@node1 ESV8C9B14]$ ./Server/bin/sys_ctl stop -D /data/kingbase/data_v8r69b14/
等待服务器进程关闭 .... 完成
服务器进程已经关闭
已经有运行的实例需要注册,无需初始化其他实例,检查收集自己要注册的实例信息(软件目录、数据目录、OS用户名、版本号)就行
ps -ef --forest | grep kingbase|grep -vE "grep|su|idle|bash"

数据库版本号

2、将实例注册为linux系统服务
01、编辑服务注册脚本
[kingbase@node1 script]$ pwd
/data/kingbase/ESV8C9B14/install/script
[root@node1 script]# cp root.sh root_54321.sh
[kingbase@node1 script]$ vi root_54321.sh
#修改这几个配置为实际情况,如果已经一致则不用改了
#软件安装目录
INSTALLDIR=/data/kingbase/ESV8C9B14
#数据库安装管理的os用户
USERNAME=kingbase
#数据库实例的数据目录
DATADIR=/data/kingbase/data_v8r69b14
#数据库版本,可以写大版本,默认如VERSION=V8,也可以写具体的小版本
VERSION=V008R006C009B0014
#系统服务名,默认是SERVICENAME=kingbased,可自定义
SERVICENAME=kingbased_54321
vi startupcfg.sh
#在文件末尾将service kingbased start修改为如下,启动注册的服务名
service $SERVICENAME start
02、注册服务会启动数据库
[root@node1 script]# ./root_54321.sh
Starting KingbaseES V008R006C009B0014:
等待服务器进程启动 .... 完成
服务器进程已经启动
KingbaseES V008R006C009B0014 started successfully
通过服务查看数据库实例状态
[root@node1 ~]# service kingbased_54321 status
sys_ctl: 正在运行服务器进程(PID: 1459)
/data/kingbase/ESV8C9B14/KESRealPro/V008R006C009B0014/Server/bin/kingbase "-D" "/data/kingbase/data_v8r69b14"
03、使用服务管理数据库
用service 进行管理,它的状态与数据库实例的状态是一致的,最好不要用systemctl命令管理,它的状态与数据库实例的状态不一定一致
001、停止数据库
[root@node1 ~]# service kingbased_54321 stop
Stopping KingbaseES V008R006C009B0014:
等待服务器进程关闭 .... 完成
服务器进程已经关闭
002、启动数据库
[root@node1 ~]# service kingbased_54321 start
Starting KingbaseES V008R006C009B0014:
等待服务器进程启动 .... 完成
服务器进程已经启动
KingbaseES V008R006C009B0014 started successfully
003、重启数据库
[root@node1 ~]# service kingbased_54321 restart
Stopping KingbaseES V008R006C009B0014:
等待服务器进程关闭 .... 完成
服务器进程已经关闭
Starting KingbaseES V008R006C009B0014:
等待服务器进程启动 .... 完成
服务器进程已经启动
KingbaseES V008R006C009B0014 started successfully
04、重启服务器验证开机自启成功
[root@node1 script]# reboot
PolicyKit daemon disconnected from the bus.
We are no longer a registered authentication agent.
[root@node1 ~]# service kingbased_54321 status
sys_ctl: 正在运行服务器进程(PID: 3545)
/data/kingbase/ESV8C9B14/KESRealPro/V008R006C009B0014/Server/bin/kingbase "-D" "/data/kingbase/data_v8r69b14"
3、删除系统服务
修改为要删除的服务名
[root@node1 script]# vi rootuninstall.sh
SERVICENAME=kingbased_54321
执行删除服务脚本
[root@node1 script]# ./rootuninstall.sh
数据库实例已关闭
[kingbase@node1 ~]$ ps -xf|grep kingbase
4349 pts/1 S+ 0:00 \_ grep --color=auto kingbase
[root@node1 script]# systemctl daemon-reload
更多推荐


所有评论(0)