一、写在前面
在达梦数据守护集群的搭建过程中,很多初学者会习惯性地用 ./dmserver、./dmwatcher、./dmmonitor 命令手工启动各个进程。这种方式在测试环境没有问题,但一旦切换到生产环境,就会暴露几个明显的痛点:
终端依赖:进程在前台运行,一旦 SSH 会话断开或终端关闭,进程就会终止
无法开机自启:服务器重启后,所有进程需要人工重新启动
管理混乱:多个进程分散在不同终端,难以统一管理
故障恢复慢:进程异常退出后,需要人工发现并重新拉起
为了解决这些问题,达梦提供了 dm_service_installer.sh 脚本,可以将数据库实例、守护进程和监视器注册为操作系统服务,实现后台运行和开机自启。
本文将详细介绍服务注册的原理、操作步骤和验证方法。
二、服务注册的本质
2.1 什么是服务注册?
服务注册,本质上是将达梦的各个进程(dmserver、dmwatcher、dmmonitor)交给操作系统的服务管理工具(如 systemd)来统一管理。
注册前(手工启动):
# 需要开多个终端,每个进程前台运行
./dmserver /dmdata/data/DAMENG/dm.ini mount
./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini
./dmmonitor /home/dmdba/dmdbms/bin/dmmonitor.ini
注册后(服务方式):
# 一条命令启动,后台运行
DmWatcherServiceWatcher01 start
DmWatcherServiceWatcher02 start
DmMonitorServiceMonitor start
| 对比项 | 手工启动 | 服务方式 |
|---|---|---|
| 运行方式 | 前台运行 | 后台运行(daemon) |
| 终端依赖 | 断开连接进程终止 | 不受终端影响 |
| 开机自启 | ❌ 不支持 | ✅ 支持 |
| 进程管理 | ps -ef | grep 查看 |
status 命令查看 |
| 异常退出 | 需人工发现并重启 | 可配置自动重启 |
| 统一管理 | 多个终端分散管理 | 统一命令管理 |
本次操作基于已搭建完成的达梦数据守护集群:
| 项目 | 主库 | 备库 |
|---|---|---|
| 实例名 | GRP1_RT_01 | GRP1_RT_02 |
| 实例端口 | 5236 | 5237 |
| 数据目录 | /dmdata/data/DAMENG | /dmdata/data1/DAMENG |
| 守护端口 | 5436 | 5437 |
| 安装目录 | /home/dmdba/dmdbms | /home/dmdba/dmdbms |
注意:注册服务需要用 root 用户执行,因为 systemd 服务文件的创建需要 root 权限。
su - root
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /dmdata/data/DAMENG/dm.ini -m mount
参数说明:
-t dmserver:指定服务类型为数据库实例服务-p GRP1_RT_01:服务名前缀,生成的服务名为 DmServiceGRP1_RT_01-dm_ini:指定 dm.ini 配置文件路径-m mount:指定实例以 Mount 方式启动(守护进程会自动将其 Open)/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher01 -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /dmdata/data1/DAMENG/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher02 -watcher_ini /dmdata/data1/DAMENG/dmwatcher.ini
注册监视器服务前,需要先准备好确认监视器的配置文件 dmmonitor.ini:
cat > /home/dmdba/dmdbms/bin/dmmonitor.ini << 'EOF'
MON_DW_CONFIRM = 1
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 512
MON_LOG_SPACE_LIMIT = 2048
[GRP1]
MON_INST_OGUID = 45331
MON_DW_IP = 192.168.200.249:5436
MON_DW_IP = 192.168.200.249:5437
EOF
mkdir -p /home/dmdba/dmdbms/log
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini
注册完成后,查看生成的服务文件:
ls -l /home/dmdba/dmdbms/bin/DmService*
ls -l /home/dmdba/dmdbms/bin/DmWatcherService*
ls -l /home/dmdba/dmdbms/bin/DmMonitorService*
预期输出:
| 操作 | 主库守护进程 | 备库守护进程 | 监视器 |
|---|---|---|---|
| 启动 | DmWatcherServiceWatcher01 start |
DmWatcherServiceWatcher02 start |
DmMonitorServiceMonitor start |
| 停止 | DmWatcherServiceWatcher01 stop |
DmWatcherServiceWatcher02 stop |
DmMonitorServiceMonitor stop |
| 状态 | DmWatcherServiceWatcher01 status |
DmWatcherServiceWatcher02 status |
DmMonitorServiceMonitor status |
| 重启 | DmWatcherServiceWatcher01 restart |
DmWatcherServiceWatcher02 restart |
DmMonitorServiceMonitor restart |
/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher01 status
/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher02 status
/home/dmdba/dmdbms/bin/DmMonitorServiceMonitor status
服务启动后,通过监视器查看集群状态:
/home/dmdba/dmdbms/bin/dmmonitor /home/dmdba/dmdbms/bin/dmmonitor.ini
在监视器界面输入 show,预期输出:
注意:
show输出的集群状态与是否注册服务无关。无论采用何种方式启动,只要集群正常运行,show的输出结果都是一致的。服务注册改变的是进程的管理方式,而非数据库的运行状态。
如果需要重新注册或清理环境,可以使用卸载脚本删除服务:
/home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh -n DmServiceGRP1_RT_01
/home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher01
/home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh -n DmServiceGRP1_RT_02
/home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher02
/home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh -n DmMonitorServiceMonitor
如果集群配置发生变化(如端口调整、目录变更),需要先删除旧服务,再重新注册新服务。
本文详细介绍了达梦数据守护集群服务注册的完整流程,包括:
服务注册的本质:将达梦进程交给操作系统统一管理
注册服务的好处:后台运行、开机自启、统一管理
操作步骤:主库、备库、监视器服务的注册命令
验证方法:检查服务状态和集群状态
常见问题:端口占用、监视器冲突等问题的解决方案
服务注册是达梦集群从“测试验证”走向“生产可用”的关键一步。完成注册后,集群不再依赖人工手工启动,具备开机自启能力,真正实现了生产环境的部署标准。
文章
阅读量
获赞
