1. 首页 > 国产数据库教程 > Kingbase教程 > 正文

kingbase教程FG007-启动关闭服务管理

内容简介

本篇文章详细介绍KingbaseES数据库服务的启动、关闭和管理方法,包括使用sys_ctl命令、systemd服务管理等内容。风哥教程参考kingbase官方文档KingbaseES管理员手册,。

通过本文的学习,您将掌握KingbaseES服务的各种管理方法,了解如何正确地启动和关闭数据库服务,以及如何设置服务自启动。

本文适用于Oracle Linux、RHEL、国产麒麟等Linux系统环境,内容涵盖生产环境中常见的服务管理操作。

目录大纲

Part01-基础概念与理论知识

1.1 服务管理概述

KingbaseES服务管理主要包括以下操作:

  • 启动服务:启动数据库实例
  • 关闭服务:停止数据库实例
  • 重启服务:重启数据库实例,风哥提示:
  • 查看状态:检查数据库实例运行状态
  • 设置自启动:配置服务开机自启

正确的服务管理是保证数据库稳定运行的重要环节。

1.2 启动关闭原理

KingbaseES的启动过程包括:

  • 读取配置文件
  • 初始化共享内存
  • 启动后台进程
  • 加载数据库文件
  • 开始接受连接

关闭过程包括:

  • 停止接受新连接,学习交流加群风哥微信: itpux-com
  • 等待现有连接结束
  • 写入WAL日志
  • 关闭后台进程
  • 释放共享内存

Part02-生产环境规划与建议

2.1 服务管理方式

风哥提示:选择合适的服务管理方式对于数据库的稳定运行至关重要。。

KingbaseES支持以下服务管理方式:

  • sys_ctl命令:KingbaseES自带的管理工具
  • systemd服务:现代Linux系统的服务管理方式
  • 自定义脚本:根据实际需求编写的管理脚本

在生产环境中,推荐使用systemd服务管理方式,因为它提供了更完善的服务监控和自启动机制。

2.2 自启动配置建议

在生产环境中,建议配置KingbaseES服务为开机自启动,以确保系统重启后数据库能够自动恢复运行。,学习交流加群风哥QQ113257174

自启动配置应考虑以下因素:

  • 服务启动顺序:确保依赖服务(如网络)先启动
  • 启动超时设置:合理设置启动超时时间
  • 失败重启策略:配置服务失败后的重启策略
  • 资源限制:设置合理的资源限制

Part03-生产环境项目实施方案

3.1 使用sys_ctl管理服务

sys_ctl是KingbaseES自带的服务管理工具,用于启动、关闭和管理数据库服务:

3.1.1 启动服务


# 启动数据库服务
# 执行
# 输出日志
[kingbase@fgedu.net.cn ~]$ sys_ctl start -D /kingbase/fgdata
waiting for server to start….2026-04-09 12:00:00 CST LOG: starting KingbaseES V8R6 (build 12345) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2026-04-09 12:00:00 CST LOG: listening on IPv4 address “0.0.0.0”, port 54321
2026-04-09 12:00:00 CST LOG: listening on IPv6 address “::”, port 54321
2026-04-09 12:00:00 CST LOG: listening on Unix socket “/tmp/.s.PGSQL.54321”
2026-04-09 12:00:00 CST LOG: database system was shut down at 2026-04-09 11:59:00 CST
2026-04-09 12:00:00 CST LOG: database system is ready to accept connections
done
server started

3.1.2 查看服务状态


# 查看服务状态
# 执行
# 输出日志
[kingbase@fgedu.net.cn ~]$ sys_ctl status -D /kingbase/fgdata
pg_ctl: server is running (PID: 12345)
KingbaseES V8R6 (build 12345) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit

3.1.3 停止服务


# 停止服务
# 执行
# 输出日志
[kingbase@fgedu.net.cn ~]$ sys_ctl stop -D /kingbase/fgdata
waiting for server to shut down…. done
server stopped

3.1.4 重启服务


# 重启服务
# 执行
# 输出日志
[kingbase@fgedu.net.cn ~]$ sys_ctl restart -D /kingbase/fgdata
waiting for server to shut down…. done
server stopped
waiting for server to start….2026-04-09 12:05:00 CST LOG: starting KingbaseES V8R6 (build 12345) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2026-04-09 12:05:00 CST LOG: listening on IPv4 address “0.0.0.0”, port 54321
2026-04-09 12:05:00 CST LOG: listening on IPv6 address “::”, port 54321
2026-04-09 12:05:00 CST LOG: listening on Unix socket “/tmp/.s.PGSQL.54321”
2026-04-09 12:05:00 CST LOG: database system was shut down at 2026-04-09 12:04:00 CST
2026-04-09 12:05:00 CST LOG: database system is ready to accept connections
done
server started

3.1.5 重载配置


# 重载配置
# 执行
# 输出日志
[kingbase@fgedu.net.cn ~]$ sys_ctl reload -D /kingbase/fgdata
server signaled

3.2 使用systemd管理服务

在现代Linux系统中,可以使用systemd来管理KingbaseES服务:

3.2.1 创建systemd服务文件


# 创建systemd服务文件
# 执行
# 输出日志
[root@fgedu.net.cn ~]# vi /etc/systemd/system/kingbase.service
# 添加以下内容:
[Unit]
Description=KingbaseES Database Server
After=network.target
[Service]
Type=forking
User=kingbase
Group=kingbase
Environment=PGDATA=/kingbase/fgdata
ExecStart=/kingbase/app/bin/sys_ctl start -D ${PGDATA}
ExecStop=/kingbase/app/bin/sys_ctl stop -D ${PGDATA}
ExecReload=/kingbase/app/bin/sys_ctl reload -D ${PGDATA}
PIDFile=/kingbase/fgdata/postmaster.pid
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target

3.2.2 启用并启动服务


# 启用并启动服务
# 执行
# 输出日志
[root@fgedu.net.cn ~]# systemctl daemon-reload
[root@fgedu.net.cn ~]# systemctl enable kingbase.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kingbase.service to /etc/systemd/system/kingbase.service.
[root@fgedu.net.cn ~]# systemctl start kingbase.service
[root@fgedu.net.cn ~]# systemctl status kingbase.service
● kingbase.service – KingbaseES Database Server
Loaded: loaded (/etc/systemd/system/kingbase.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2026-04-09 12:10:00 CST; 10s ago
Process: 12345 ExecStart=/kingbase/app/bin/sys_ctl start -D ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 12346 (postgres)
CGroup: /system.slice/kingbase.service
├─12346 /kingbase/app/bin/postgres -D /kingbase/fgdata
├─12347 postgres: logger process
├─12348 postgres: checkpointer process
├─12349 postgres: writer process
├─12350 postgres: wal writer process
├─12351 postgres: autovacuum launcher process
├─12352 postgres: stats collector process
└─12353 postgres: bgworker: logical replication launcher
Apr 09 12:10:00 fgedu.net.cn systemd[1]: Starting KingbaseES Database Server…
Apr 09 12:10:00 fgedu.net.cn systemd[1]: Started KingbaseES Database Server.

3.2.3 管理服务


# 停止服务
# 执行
# 输出日志
[root@fgedu.net.cn ~]# systemctl stop kingbase.service
# 重启服务
# 执行
# 输出日志
[root@fgedu.net.cn ~]# systemctl restart kingbase.service
# 查看服务状态
# 执行
# 输出日志
[root@fgedu.net.cn ~]# systemctl status kingbase.service

3.3 服务状态监控

定期监控服务状态,确保数据库正常运行:

3.3.1 查看进程状态


# 查看进程状态
# 执行
# 输出日志
[root@fgedu.net.cn ~]# ps aux | grep postgres
kingbase 12346 0.1 2.0 123456 78901 ? Ss 12:10 0:00 /kingbase/app/bin/postgres -D /kingbase/fgdata
kingbase 12347 0.0 0.1 123456 1234 ? S 12:10 0:00 postgres: logger process
kingbase 12348 0.0 0.2 123456 2345 ? S 12:10 0:00 postgres: checkpointer process
kingbase 12349 0.0 0.2 123456 2456 ? S 12:10 0:00 postgres: writer process
kingbase 12350 0.0 0.1 123456 1345 ? S 12:10 0:00 postgres: wal writer process
kingbase 12351 0.0 0.1 123456 1456 ? S 12:10 0:00 postgres: autovacuum launcher process
kingbase 12352 0.0 0.1 123456 1567 ? S 12:10 0:00 postgres: stats collector process
kingbase 12353 0.0 0.1 123456 1678 ? S 12:10 0:00 postgres: bgworker: logical replication launcher

3.3.2 查看端口监听


# 查看端口监听
# 执行
# 输出日志
[root@fgedu.net.cn ~]# netstat -tulpn | grep 54321
tcp 0 0 0.0.0.0:54321 0.0.0.0:* LISTEN 12346/postgres

3.3.3 连接测试


# 连接测试
# 执行
# 输出日志
[kingbase@fgedu.net.cn ~]$ psql -U system -d fgedudb -c ‘SELECT 1;’
?column?
———-
1
(1 row)

Part04-生产案例与实战讲解

4.1 典型服务管理场景

以下是一些典型的服务管理场景:

场景1:系统重启后自动启动服务

操作步骤:,更多视频教程www.fgedu.net.cn

  1. 创建systemd服务文件
  2. 启用服务自启动
  3. 重启系统测试

# 验证服务自启动
# 执行
# 输出日志
[root@fgedu.net.cn ~]# reboot
# 系统重启后
[root@fgedu.net.cn ~]# systemctl status kingbase.service
● kingbase.service – KingbaseES Database Server
Loaded: loaded (/etc/systemd/system/kingbase.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2026-04-09 12:15:00 CST; 2min ago

场景2:配置文件修改后重启服务

操作步骤:

  1. 修改配置文件
  2. 重启服务使配置生效
  3. 验证配置是否生效

# 修改配置文件并重启
# 执行
# 输出日志
[kingbase@fgedu.net.cn ~]$ vi /kingbase/fgdata/kingbase.conf
# 修改max_connections参数
max_connections = 300
[kingbase@fgedu.net.cn ~]$ systemctl restart kingbase.service
[kingbase@fgedu.net.cn ~]$ psql -U system -d fgedudb -c ‘SHOW max_connections;’
max_connections
—————–
300
(1 row)

4.2 常见服务问题处理

在服务管理过程中,可能会遇到以下常见问题:

问题1:服务启动失败

原因:可能是配置文件错误、端口被占用、权限问题等

解决方案:

  • 查看日志文件 /kingbase/fgdata/log/kingbase-*.log,更多学习教程公众号风哥教程itpux_com
  • 检查端口是否被占用
  • 检查目录权限是否正确
  • 验证配置文件语法

# 查看启动日志
# 执行
# 输出日志
[kingbase@fgedu.net.cn ~]$ tail -n 50 /kingbase/fgdata/log/kingbase-2026-04-09_120000.log
2026-04-09 12:00:00 CST LOG: starting KingbaseES V8R6 (build 12345) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2026-04-09 12:00:00 CST LOG: listening on IPv4 address “0.0.0.0”, port 54321
2026-04-09 12:00:00 CST LOG: listening on IPv6 address “::”, port 54321
2026-04-09 12:00:00 CST LOG: listening on Unix socket “/tmp/.s.PGSQL.54321”
2026-04-09 12:00:00 CST LOG: database system was shut down at 2026-04-09 11:59:00 CST
2026-04-09 12:00:00 CST LOG: database system is ready to accept connections

问题2:服务无法停止

原因:可能是有活跃连接、死锁或进程卡住

解决方案:

  • 查看活跃连接
  • 使用 -m fast 或 -m immediate 选项强制停止
  • 如果仍然无法停止,使用 kill 命令终止进程

# 强制停止服务
# 执行
# 输出日志
[kingbase@fgedu.net.cn ~]$ sys_ctl stop -D /kingbase/fgdata -m fast
waiting for server to shut down…. done
server stopped

问题3:服务启动缓慢

原因:可能是数据库需要恢复、检查点操作或资源不足

解决方案:

  • 查看启动日志,了解启动过程,from DB视频:www.itpux.com
  • 优化配置参数,如 shared_buffers
  • 确保硬件资源充足

Part05-风哥经验总结与分享

5.1 服务管理最佳实践

  • 使用systemd:在现代Linux系统中,推荐使用systemd管理服务
  • 配置自启动:确保服务开机自启,提高可用性
  • 定期检查:定期检查服务状态,及时发现问题
  • 合理配置:根据硬件资源配置服务参数
  • 备份配置:定期备份服务配置文件
  • 监控告警:设置服务状态监控和告警

5.2 故障处理建议

在遇到服务故障时,建议采取以下步骤:

故障处理流程

  1. 识别问题:查看日志文件,了解故障原因
  2. 分析原因:根据日志信息分析故障原因
  3. 采取措施:根据故障原因采取相应措施
  4. 验证修复:确认服务恢复正常
  5. 记录总结:记录故障处理过程,总结经验

风哥提示:在处理服务故障时,应先尝试优雅停止,避免强制终止导致数据损坏。,。

通过本文的学习,您已经掌握了KingbaseES服务的启动、关闭和管理方法。在实际生产环境中,正确的服务管理能够提高数据库的可靠性和可用性。

本文档风哥教程参考kingbase官方文档KingbaseES管理员手册编写,。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息