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
- 创建systemd服务文件
- 启用服务自启动
- 重启系统测试
# 验证服务自启动
# 执行
# 输出日志
[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:配置文件修改后重启服务
操作步骤:
- 修改配置文件
- 重启服务使配置生效
- 验证配置是否生效
# 修改配置文件并重启
# 执行
# 输出日志
[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 故障处理建议
在遇到服务故障时,建议采取以下步骤:
故障处理流程
- 识别问题:查看日志文件,了解故障原因
- 分析原因:根据日志信息分析故障原因
- 采取措施:根据故障原因采取相应措施
- 验证修复:确认服务恢复正常
- 记录总结:记录故障处理过程,总结经验
风哥提示:在处理服务故障时,应先尝试优雅停止,避免强制终止导致数据损坏。,。
通过本文的学习,您已经掌握了KingbaseES服务的启动、关闭和管理方法。在实际生产环境中,正确的服务管理能够提高数据库的可靠性和可用性。
本文档风哥教程参考kingbase官方文档KingbaseES管理员手册编写,。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
