目录
解决达梦数据库开机无法自动启动的问题
您遇到的问题是达梦数据库(DM)服务在系统重启后无法自动启动。这通常与权限、服务配置或启动顺序有关。
使用rc.local传统方式(推荐简单系统)
创建/编辑rc.local文件:
sudo nano /etc/rc.local
添加以下内容(如果文件已存在,在exit 0
前添加):
#!/bin/bash
# 等待必要服务启动
sleep 15
# 设置环境变量(根据实际安装路径调整)
export DM_HOME=/opt/dmdbms
export PATH=$DM_HOME/bin:$PATH
# 启动达梦服务
su - dmdba -c "$DM_HOME/bin/DmServiceDMSERVER start"
exit 0
设置执行权限:
sudo chmod +x /etc/rc.local
启用rc-local服务(对于systemd系统):
sudo systemctl enable rc-local.service
创建自定义systemd服务(更现代可靠)
创建服务文件:
sudo nano /etc/systemd/system/dmdb.service
添加以下内容:
[Unit]
Description=DM Database Server
After=network.target remote-fs.target
Requires=network.target
[Service]
Type=forking
User=dmdba
Group=dinstall
Environment=DM_HOME=/opt/dmdbms
Environment=PATH=$DM_HOME/bin:$PATH
ExecStart=/opt/dmdbms/bin/DmServiceDMSERVER start
ExecStop=/opt/dmdbms/bin/DmServiceDMSERVER stop
Restart=on-failure
RestartSec=30s
TimeoutStartSec=300
[Install]
WantedBy=multi-user.target
重新加载并启用服务:
sudo systemctl daemon-reload
sudo systemctl enable dmdb.service
使用crontab的@reboot(备选方案)
sudo crontab -e
添加:
@reboot sleep 30 && su - dmdba -c "/opt/dmdbms/bin/DmServiceDMSERVER start"
重要补充步骤
确保目录权限正确:
sudo chown -R dmdba:dinstall /dmdata
sudo chmod -R 750 /dmdata
检查依赖项:
# 查看达梦数据库依赖的库
ldd /opt/dmdbms/bin/dmserver
# 确保所有依赖库都存在
验证脚本执行权限:
sudo ls -l /opt/dmdbms/bin/DmServiceDMSERVER
调试技巧
如果服务仍然无法启动,可以添加调试输出:
# 在脚本中添加日志记录
{
echo "==== $(date) ===="
export DM_HOME=/opt/dmdbms
/opt/dmdbms/bin/DmServiceDMSERVER start
echo "退出状态: $?"
} >> /var/log/dm_startup.log 2>&1
还有其他的解决方案
1. 检查服务是否设置为开机自启
# 检查服务是否启用开机自启
sudo systemctl is-enabled DmServiceDMSERVER.service
# 如果没有启用,执行以下命令
sudo systemctl enable DmServiceDMSERVER.service
2. 检查挂载点问题(如果/dmdata是单独分区)
# 查看/etc/fstab中/dmdata的挂载配置
cat /etc/fstab | grep dmdata
# 如果/dmdata是单独分区,确保添加了挂载选项"defaults"和正确的文件系统类型
3. 检查启动顺序依赖
达梦可能依赖其他服务(如网络)先启动:
# 编辑服务配置文件
sudo nano /lib/systemd/system/DmServiceDMSERVER.service
# 在[Unit]部分添加依赖(示例)
After=network.target remote-fs.target nss-lookup.target
4. 检查启动超时设置
# 编辑服务配置文件
sudo nano /lib/systemd/system/DmServiceDMSERVER.service
# 在[Service]部分添加(单位是秒)
TimeoutStartSec=300
5. 创建启动日志以便调试
# 编辑服务配置文件
sudo nano /lib/systemd/system/DmServiceDMSERVER.service
# 在[Service]部分添加
StandardOutput=file:/var/log/dm_service.log
StandardError=file:/var/log/dm_service_error.log
6. 检查系统启动后手动执行
# 创建一个测试脚本
sudo nano /etc/rc.local
# 添加以下内容(如果文件不存在,创建它)
#!/bin/bash
sleep 10 # 等待其他服务启动
systemctl start DmServiceDMSERVER.service
exit 0
# 给文件执行权限
sudo chmod +x /etc/rc.local
# 启用rc.local服务(如果系统使用systemd)
sudo systemctl enable rc-local.service
7. 检查数据库启动日志
# 查看达梦数据库启动日志
cat /opt/dmdbms/log/dm_*.log
永久解决方案建议
确保目录权限持久化:
sudo chown -R dmdba:dinstall /dmdata
sudo chmod -R 750 /dmdata
创建systemd服务依赖:
sudo systemctl edit DmServiceDMSERVER.service
添加:
[Unit]
After=network.target remote-fs.target
Requires=network.target remote-fs.target
检查是否有其他服务冲突:
sudo journalctl -b -u DmServiceDMSERVER.service
考虑使用cron任务作为后备方案:
sudo crontab -e
添加:
@reboot sleep 30 && /opt/dmdbms/bin/DmServiceDMSERVER start
请尝试上述方法后重启系统测试,如果问题仍然存在,建议检查/var/log/messages
或journalctl -b
获取更详细的启动错误信息
* Thanks you *
如果觉得文章内容不错,随手帮忙点个赞、在看、转发一下,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章。
*往期推荐 *
银河麒麟 | ubuntu 安装国产达梦DM8数据库(安装+外网通+IDEA连接)
网络设备日志存储到指定的Kiwi-log服务器(图解+软件)
银河麒麟 | ubuntu 安装运用 docker 容器,实现容器化部署项目
银河麒麟 | ubuntu 安装zabbix监控设备信息(亲测包对)
只需5步让你轻松导出学习通纯考试题目(JavaScript)
国产操作系统-银河麒麟本地化部署Ollama国产开源的AI大模型Qwen3
Swagger | 手把手带你写自动生成接口文档的爽感(零基础亲测实用)
SpringBoot整合Openfeign接入Kimi Ai!!超简单,居然没多少行代码??(附加兜底教程)
Maven | 站在初学者的角度配置与项目创建(新手必学会)
Spring Ai | 极简代码从零带你一起走进AI项目(中英)
MongoDB | 零基础学习与Springboot整合ODM实现增删改查(附源码)
Openfeign | 只传递城市代码,即可获取该地域实时的天气数据(免费的天气API)
Mongodb | 基于Springboot开发综合社交网络应用的项目案例(中英)
感谢阅读 | 更多内容尽在公棕号 WMCode | CSDN@小Mie不吃饭