实例启动问题

License 过期要怎么处理

DM 数据库启动后提示 product has expried。“License已经过期”,表明数据库授权已经到期,需要跟达梦相关人员沟通,完成替换授权工作,恢复服务正常启动。

启动时提示找不到 license

首先确认你是否有 license,所谓的 license 就是 DM 数据库的授权文件 dm.key,license 一般是通过销售渠道获取的,要么是申请的临时授权,要么是购买了正版数据库后获得的正式授权。

如果是从官方网站上下载的版本是没有 license 文件的,所以在启动过程中会提示 file dm.key not found, use default license!,这是正常的,不会影响我们正常使用数据库。

如果你已经有了 license 文件,且文件放入了指定目录,启动时还是提示 file dm.key not found, use default license!,那么请检查授权文件的是否有当前启动数据库的用户的读权限。

启动 DM 数据库报错:dmserver startup failed, code=-104[invalid int file]

启动 DM 数据库时,命令中确保 dm.ini 路径正确。

启动 DmAPService 服务失败

Windows 安装 DM 数据库,在安装完成的最后一步报错:启动 DmAPService 服务失败! 可以尝试以下方法:

  • 报这个错没关系,先点击【确定】完成。启动服务的时候可以手动启动。
  • 以管理员方式运行安装程序,同时检查授权 key 文件是否过期、操作系统的时间是否正确。
  • 查看日志,详细查看日志目录 (D:\dmdbms\log) 下的相关日志文件,分析日志中的报错信息。

启动时数据库报 open files 连接超出资源限制

报错信息

该日志写入 dmdbms/log 里面的服务启动日志,可从里面看到是 open files 超出系统限制。有时候按照标准修改了 /etc/security/limits.conf,资源赋值为 65538 也未必够,可以将值修改得更大即可解决。

使用 root 用户进行以下操作:

\#vi /etc/security/limits.conf
dmdba soft nofile 65538
dmdba hard nofile 65538
dmdba soft nproc 65538
dmdba hard nproc 65538
\#vim /etc/security/limits.d/90-nproc.conf
\* soft  nproc  1024
root  soft  nproc  unlimited
\* nproc  16384
注意

`90-nproc.conf` 文件名可能会随着系统变化而不同。

Linux 环境下启动数据库的命令

Linux 环境下启动 DM 数据库:进入数据库安目录的 bin 目录下执行命令 service DmServiceDMSERVER start/stop/restart(启动/停止/重启)。

假设数据库安装目录在 /opt/dmdbms/bin 目录下,则命令启动方法如下:

启动数据库服务

假设数据库安装目录在 /opt/dmdbms/ 目录下,也可以通过图形化启动数据库,方法如下:

  • 进入 /opt/dmdbms/tool/ 目录执行 ./dmservice.sh 弹出图形化界面

执行 dmservice.sh

  • 图形化界面使用方式

右键 DM 数据库实例服务点击【启动】即可启动数据库服务。

图形化启动数据库服务

DM 数据库如何前台启动

进入 DM 安装目录下的 bin 目录,直接打开应用程序 dmserver 就可以启动 DM 数据库。或者先打开 Windows 命令提示符工具,在命令工具中执行命令进入 DM 服务器的目录,再执行 dmserver 的命令启动 DM 数据库。

详细步骤可以参考《DM 系统管理员手册》第八章节。手册位于数据库安装路径 /dmdbms/doc 文件夹下。

命令行方式启动参数方式:dmserver [ini_file_path] [-noconsole] [mount]

说明如下:

  • Dmserver 命令行启动参数可指定 dm.ini 文件的路径,非控制台方式启动及指定数据库是否以 Mount 状态启动。
  • Dmserver 启动时可不指定任何参数,默认使用当前目录下的 dm.ini 文件,如果当前目录不存在 dm.ini 文件,则无法启动。
  • Dmserver 启动时可以指定 -noconsole 参数。如果以此方式启动,则无法通过在控制台中输入服务器命令。

如何启动和关闭 DM 数据库

  • 通过“DM 服务查看器”来启动数据库服务

Windows 或 Linux 都可以通过“DM 服务查看器”来启动数据库服务(Linux 前提是有图形界面),Linux 如果是图形界面安装的数据库,“DM 服务查看器”也在桌面的“达梦数据库”文件夹看下,如果使用的是命令行安装,需要在图形界面进入到 ../dmdbms/tool/ 执行 ./dmservice.sh 来运行,“DM 服务查看器”如下图所示:

服务查看器

  • 通过系统服务启动数据库

Windows 环境

通过在【运行】输入 services.msc 打开【服务】,在服务中找到 DmService 开头的服务进行启动和关闭数据库,如下图所示:

服务查看器

Linux 环境

Linux 使用系统服务启动和关闭数据库的方法前提是系统注册了数据库服务。关于注册数据库服务知识请参考《DM_Linux 服务脚本手册》,手册位于数据库安装路径 /dmdbms/doc/special 文件夹下。

DM6 版本启动数据库方法如下:(使用 root 用户)

查看 DM 数据库服务:\# chkconfig --list| grep DmService

查看数据库服务

启动数据库服务:\# service DmServiceDAMENG start

停止数据库服务:\# service DmServiceDAMENG stop

确认服务是否启动:\# ps -ef | grep dmserver

DM7 版本启动数据库方法如下:(使用 root 用户)

查看 DM 数据库服务:\# systemctl list-unit-files|grep DmService

查看数据库服务

启动数据库服务:\# systemctl start DmServiceDAMENG.service

停止数据库服务:\# systemctl stop DmServiceDAMENG.service

确认服务是否启动:\# ps -ef | grep dmserver

  • 通过命令启动

通过命令启动是数据前台启动的,一般在调试时才使用,是方便观察日志输出。

使用命令启动时务必使用 dmdba 用户启动,避免出现未知问题。

启动格式 dmserver path=dm.ini 的路径如下:

$ cd /home/dmdba/dmdbms/bin/
$ ./dmserver path=/home/dmdba/dmdbms/dmdata/DAMENG/dm.ini

当出现 SYSTEM IS READY 字样时说明数据库已正常启动。

数据库正常启动

DM 数据库启动报错:[DM64][buf4_default_pool_init]errot in buf4 pool init

内存参数配置过大,剩余内存不足,将数据库 dm.ini 文件里 buffermax_buffer 改小一些。

Docker 配置安装 DM 数据库,并配置自启动

Docker 下和普通 Linux 命令行方式安装数据库相同:

./DMInstall.bin -i

设置开机启动需要注册服务:

./dm_service_installer.sh -t dmserver -i /opt/dmdbms/data/DAMENG/dm.ini -p dmserver

需要注意关闭 Docker 镜像时,需要先关闭数据库服务,避免出现类似于服务器异常掉电可能导致写缓存丢失,进而导致数据库数据文件出现异常

数据库开机自启

  • 如果是图形化的方式创建实例:图形化工具会自动创建开启自启服务,所以不需要再进行其他操作就可以让实例开机自启。
  • 如果是命令行的方式创建实例:需要自己手动注册开机自启的服务,注册自启服务之后,可以实现开机自启。如果没有注册开机自启服务,则不会实现实例的开机自启功能。

启动/重启 DM 数据库失败

有以下可能原因:

  • 启动失败:用户可能没有初始化,需要初始化数据库。可以参考达梦数据库安装及初始化
  • 参考《DM 系统管理员手册》第 7 章-启动和关闭数据库,(手册位于数据库安装路径 /dmdbms/doc 文件夹下。)看是否启动方式错误。或者可以参考 Linux 平台达梦数据库启动与关闭
  • 其他原因造成的启动/重启失败,可查看数据库安装路径下/log 文件夹中的日志,通过分析报错时间段内的错误信息,来定位具体导致的原因。也可以将相关日志发给 DM 技术服务人员进行分析定位。

建库实例/初始化实例参数设置

数据库实例初始化参数中有 4 个是无法修改的:(请在数据库安装前做好规划)

  1. 簇大小,簇是每次申请的页数,表存满了以后会一次性连续申请(参数设置)个页的空间。
  2. 页大小,影响每一行能存储的最大值,和查询效率。
  3. 字符集,影响所用的字符集后期是否支持对应的生僻字等。
  4. 大小写敏感,影响 SQL 编写,对小写对象是否需要添加双引号。

初始化参数

参数说明如下:

  • 数据文件簇大小

数据文件使用的簇大小,即每次分配新段空间时的连续页数,可以为 16 页或 32 页,推荐使用 16 页。这个参数一般不用修改。

  • 页大小 (page_size)

除去 Clob、Blob 等大字段外,数据库中一行记录的所有字段的实际长度的和不能超过页大小的一半。建议页大小设置为 16 KB,防止在后期进行数据迁移和开发过程中出现记录超长的问题;

  • 字符集

字符集选项。取值:0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR。默认为 0。可选参数。

  • 字符串比较大小写敏感 (case_sensitive)

默认为大小写敏感的,根据具体情况进行设置。迁移实施中如果原始库为 Oracle 和 DB2 数据库的话需设置为大小写敏感,若为 SQL Server 和 MySQL 数据库则需设置为大小写不敏感,所以在数据库初始化库的过程中需要根据具体情况来选择。

注意事项

在开发环境和测试环境的页大小、字符串大小写敏感等初始化参数一定要保持一致,避免使用 .bak 文件进行还原的时候,因为初始化参数不一致导致无法还原的问题。

DM 数据库启动后提示 [License 已经过期]

DM 数据库遇到该报错表明数据库授权已经到期,需要跟 DM 数据库相关人员沟通,完成替换授权工作,恢复服务正常启动。

数据库实例初始化完毕,如何将大小写敏感改为不敏感

DM 数据库在初始化实例时有勾选大小写敏感选项。

初始化参数

初始化完成后是无法修改大小写敏感的,只能删除该实例重新初始化,所以在初始化时一定要确认选择。

DM7 是以 Docker 镜像的方式启动的,通信中产生的告警信息,错误代码是:107 Transport endpoint 是否有影响

不影响,警告对应数据库告警信息如下:

报错信息

初始化 SSL 环境失败

报错信息

将 dm.ini 里面的 ENABLE_ENCRYPT 修改为 0 后,重启实例即可解决。

更多 DM 数据库 SSL 相关问题请参照以下内容:

请详细参考:达梦数据库配置 SSL 认证加密

请详细参考:达梦数据库配置 SSL 认证加密登录测试以及问题处理

dminit 方式初始化实例出现的问题

请参考如下两种建议:

  • 为了减少对操作系统的影响,用户不应该以 root 用户来安装和运行 DM。用户可以在安装之前为 DM 创建一个专用的操作系统用户,例如创建用户 dmdba 和组 dinstall,并将安装目录赋予用户组
chown -R dmdba:dinstall /xx

针对 dminit 工具出现的创建文件夹失败问题排查过程如下:

  • 排查该文件是否有相对应的用户权限,例如:可能使用 dmdba 用户进行操作,但是 dminit 文件为 root 用户所有,则是权限不够。
  • 排查该文件是否有写入权限,例如:可能计划数据文件目录属者为 root 或其他用户,但是使用 dmdba 用户操作 dminit 则会没有写入数据文件的权限。

以下是赋权命令:

chmod 777 /opt/ --赋予 opt 目录所有权限
chmod 777 /opt/ -R --赋予 opt 目录以及其子目录所有权限
chown dmdba:dinstall /opt/ -R -- 更改 dmdbms 目录以及其子目录用户和组为 dmdba:dinstall
  • 初始化命令缺少 PATH 参数导致,修改命令后正常

执行 ./dminit path=目录 就可以指定目录了,根据项目需要更改其他初始化参数(如页大小,大小写敏感,日志大小等)。

可以执行 ./dminit help 里面有相应的参数,可以进行参考。

远程关闭数据库

首先需要远程连接到目的端的数据库界面。

  • 如果数据库实例是前台启动,需要关闭前台启动的界面,即在前台界面输入 exit,待最后出现 DM Database Server shutdown successfully 信息并且重新返回命令行模式即表示停止成功。

停止成功信息

  • 如果数据库实例是后台脚本启动,需要使用命令 cd 到安装数据库的 bin 目录下,执行脚本 ./服务名 stop,就可以关闭数据库了,例如,启停脚本为 dmserverd 则数据库停止命令为 ./dmserverd stop,待出现绿色 OK 则停止成功。

Linux 中怎么删除实例

在 Windows 上可以用 DBCA 工具删除实例,Linux 无法用 DBCA 工具,删除实例方法如下

首先确认初始化实例的安装目录,直接 rm data 文件夹就行。请删除前确认是否可以删除

启动数据库提示 system information invalid

system 表空间损坏,需要用备份来进行还原处理。

linux 系统下达梦数据库如何设置为开机自启动

方法一(推荐):

cd /opt/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DMSERVER -i /dameng/data/DBTEST_DW/dm.ini

检查服务是否开机自启,服务名 DmServiceDMSERVER ,不同操作系统有不同检查方法。请根据当前操作系统自行检查。

方法二:

修改启动脚本,将 DM 启动脚 本 DmServiceXXXXX 移到 /etc/init.d 下,chkconfig DmServiceXXXXX on 确认此数据库能以 dmdba 用户正常前台启动后(必须步骤),操作步骤如下:

  1. 复制数据库实例服务脚本 dmserverd,命名为 DmInstanceServiceDAMENG 并修改,修改 path 值为 dm.ini 路径(必须),dm_home 设置为 dm 主程序安装路径(必须),svc_porg 设置为数据库实例名(可选推荐)。
  2. 将脚本 DmInstanceServiceDAMENG 复制到 /etc/rc.d/init.d 目录下。

cp/opt/dmdbms/bin/DmInstanceServiceDAMENG /etc/rc.d/init.d/DmInstanceServiceDAMENG

  1. 赋予服务脚本 DmInstanceServiceDAMENG 可执行权限。

chmod 777 /etc/rc.d/init.d/DmInstanceServiceDAMENG

  1. 注册 DM 实例服务并配置开机自动启动。

chkconfig --add DmInstanceServiceDAMENG
chkconfig DmInstanceServiceDAMENG on
chkconfig --list DmInstanceServiceDAMENG

  1. 后台启动达梦数据库实例服务,查看服务状态,关闭实例服务。

service DmInstanceServiceDAMENG start
service DmInstanceServiceDAMENG status
service DmInstanceServiceDAMENG stop

服务启动报错:-112 证书过期

因为数据库服务授权过期,可以联系达梦咨询热线 400 991 6599 转 1 号线申请。

启动报错:Global parameter value of RT_TARGET is illegal, use min value

【问题详情】

之前服务是可以正常启动的,服务器异常断电后,再启动就启动不了:

服务启动失败

【问题解答】

实例启动失败的问题,都需要客户提供数据库日志进行判断。
报错显示 RT_HEAP_TARGET is illegal,use min value。RT_HEAP_TARGET 的含义是会话上用于动态对象存储的 RT_HEAP 最大可扩展到的大小。
检查 dm.ini 文件中 RT_HEAP_TARGET 的设置值,将该值改小以尝试启动数据库。
若仍旧无法启动,则需要通过数据库日志进行详细定位。

windows 无法启动 DmAPService 服务。错误 3:系统找不到指定的路径

避免杀毒软件、安全卫士等防护软件误删。可以用 DBCA 工具重新注册一下这个服务,再启动。

也可以参考一下 达梦数据库服务说明

windows 系统初始化数据库实例后,服务查看器里是空白,没有任何服务

查看当前操作系统是否有杀毒软件,需要将数据库加入到白名单,然后重新注册服务。

启动数据库报错:failed at step EXEC spawning…:No such file or directory

【问题详情】

服务启动失败

【问题解答】

该报错是因为启动数据库的服务被删除了,重新注册服务即可。

可以参考:注册服务

启用达梦服务报错 out of memory

减少 dm.ini 配置文件里面的内存大小,参考安装目录下 doc 目录下的见 DM 系统管理员手册,2.1.1 节,dm.ini 参数说明中,“内存相关参数”部分。

数据库日志报错:main_thread mem_malloc_ex2(1048640) out of memory

【问题说明】
数据库服务日志报错【ERROR database p0000001217 main_thread mem_malloc_ex2(1048640) out of memory!,fail to e memory OS】。
一般对于此问题是由于数据库由用户自行安装,在安装前没有检查操作系统参数引起。数据库现场一般需要将内核的内存分配参数 overcommit_memory 设置为 0。

【解决方法】
一般对于此问题是由于数据库由用户自行安装,在安装前没有检查操作系统参数引起。数据库现场一般需要将内核的内存分配参数 overcommit_memory 设置为 0。
1、查看内存分配参数 overcommit_memory 的值。
cat /proc/sys/vm/overcommit_memory
2、临时修改一个内核对内存分配的一种策略:
echo 0 > /proc/sys/vm/overcommit_memory
3、永久修改方法:
编辑/etc/sysctl.conf ,修改 vm.overcommit_memory=0,然后执行 sysctl -p 使配置文件生效。

vm.overcommit_memory 参数值表示:
vm.overcommit_memory=0 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
vm.overcommit_memory=1 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
vm.overcommit_memory=2 表示内核允许分配超过所有物理内存和交换空间总和的内存。

移动数据文件后启动数据库报错:Server key decrypt failed

服务启动失败

【问题解决】

找到 dm_service.prikey 文件,和数据文件放在同一目录,然后重启数据库。

用 root 启动 docker 版本达梦数据库报错:permission denied

【问题解决】

通过如下方法进行解决:
1.在运行容器的时候,给容器加特权,即加上 --privileged=true 参数。例如:

docker run -i -t -v /usr/local/app:/usr/local/app --privileged=true 镜像id /bin/bash

2.临时关闭 selinux,执行:

setenforce 0

数据库启动报错:libgcc_s.so.1 must be installed for pthread_cancel to work

【问题描述】

DM 数据库无论后台服务脚本启动,还是前台启动都会报 libgcc_s.so.1 must be installed for pthread_cancel to work 的错误,前台报错如下:

[dmdba@DATABASE bin]$ ./dmserver /soft/dmdbms/data/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-94-21.11.11-150650-10038-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-11-11
libgcc_s.so.1 must be installed for pthread_cancel to work
Floating point exception (core dumped)

【问题分析】

在达梦服务中部署了 oracle19c 时,安装 libnsl 组件就会出现该问题。
具体分析:在部署 oracle19c 时,执行./runInstaller,无论调用图形界面还是试用静默安装,都是报错,提示:

/soft/oracle/app/oracle/product/19.3.0/db_1/perl/bin/perl: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

该问题实际原因是缺失库文件导致,需要安装 libnsl 库文件,可通过以下两种方式安装 oracle19c 需要的库文件:
方法一:通过软链接安装

[root@localhost lib64]# ls -lrt /usr/lib64 | grep libnsl
lrwxrwxrwx.  1 root root       15 Aug 12  2018 libnsl.so.2 -> libnsl.so.2.0.0
-rwxr-xr-x.  1 root root   116408 Aug 12  2018 libnsl.so.2.0.0
lrwxrwxrwx   1 root root       26 Jan 14 05:31 libnsl.so.1 -> /usr/lib64/libnsl.so.2.0.0

方法二:yum 直接安装。默认 linux 会有 libnsl.so 的动态库,如下:

--- 查看 Linux 中的 libnsl 库文件
[root@localhost lib64]# ls -lrt /usr/lib64 | grep libnsl
lrwxrwxrwx.  1 root root       15 Aug 12  2018 libnsl.so.2 -> libnsl.so.2.0.0
-rwxr-xr-x.  1 root root   116408 Aug 12  2018 libnsl.so.2.0.0

---yum 安装库文件
[root@localhost lib64]# yum install libnsl

---安装后会出来新的 libnsl 库文件
[root@localhost lib64]# ls -lrt /usr/lib64 | grep libnsl
lrwxrwxrwx.  1 root root       15 Aug 12  2018 libnsl.so.2 -> libnsl.so.2.0.0
-rwxr-xr-x.  1 root root   116408 Aug 12  2018 libnsl.so.2.0.0
lrwxrwxrwx   1 root root       14 Dec 14  2018 libnsl.so.1 -> libnsl-2.28.so
-rwxr-xr-x   1 root root   150544 Dec 14  2018 libnsl-2.28.so

两种方式都能解决 oracle 安装时出现的该报错。但是,此时如果达梦数据库服务重启,则达梦数据库会报错:libgcc_s.so.1 must be installed for pthread_cancel to work。解决方案如下:

1.将 libnsl.so.1 组件移动到其他路径,比如:/home/oracle
2.将 libnsl.so.1 组件路径写入到 oracle 的环境变量 LD_LIBRARY_PATH 中。

[root@localhost bin]# ln -s /usr/lib64/libnsl.so.2.0.0 /home/oracle/libnsl.so.1

此时 DM 和 oracle 共存。达梦数据库启动不会报 libgcc_s.so.1 must be installed for pthread_cancel to work 的错,oracle 调用 runInstaller 或 sqlplus 时也不会报 error while loading shared libraries: libnsl.so.1 的错误。

使用脚本启动数据库出现[FAILED],且无日志生成

【问题描述】

使用启动脚本启动数据库时,出现[FAILED],服务端日志 dm_DMSERVER_20**.log 无日志记录,生成了文件 DmService_DMSERVER.log 文件,但是未记录任何内容。

【问题解决】

通过排查确认是由于无法切换到 dmdba 用户导致,通过以下命令查看用户信息:

cat /etc/passwd |grep dmdba

显示信息为:
dmdba:x:103:105::/home/dmdba/dm:/bin/false
确认是由于 dmdba 用户被禁止登录,需要修改系统配置,修改方法:

usermod -s /bin/bash dmdba

使用 DmAPService 脚本启动 dmap 服务报错:failed to get ps

【问题描述】

使用 DmAPService 脚本启动 dmap 服务报错,报错信息:“failed to get ps!”,但是使用./dmap 命令前台启动 dmap 正常。报错截图如下:

报错截图

【问题分析】
根据报错信息以及 DmAPService 服务脚本内容可以定位到报错发生的可能原因,可以直接在 DmAPService 脚本中查找报错信息"failed to get ps!"。原因可能为服务脚本需要使用操作系统 ps 命令去执行相关操作,但是未能成功获取到 ps 命令。导致未能成功获取到 ps 命令的可能原因是:
(1)ps 命令不存在;
(2)ps 命令的路径与服务脚本中的路径不同;
(3)dmdba 用户无权限使用 ps 命令。
1、检查操作系统 ps 命令;
(1)可以使用命令 whereis ps 查看 ps 的路径;

[root@localhost ~]# whereis ps
ps: /usr/bin/ps

(2)根据上面查到的 ps 命令路径,检查 DmAPService 服务脚本中是否有包含该路径;
DmAPService 服务脚本会去判断操作系统下/usr/ucb/ps、/usr/bin/ps、/bin/ps 是否存在,只要其中一个存在即可使用对应的 ps 命令。
(3)检查 ps 命令的权限,普通用户是否有权限执行;

[root@localhost ~]# ls -l /usr/bin/ps
-rwx------ 1 root root 137672  3月 15  2020 /usr/bin/ps

正常情况下,ps 命令权限应为 755,当前环境 ps 命令为 700,所以普通用户没有 ps 命令执行权限。
(4)使用 dmdba 用户执行 ps 命令。

[dmdba@localhost bin]$ ps -ef|grep dms
-bash: /usr/bin/ps: 权限不够                     -----提示权限不够

3、使用 root 用户修改 ps 命令权限为 755;

[root@localhost ~]# chmod 755 /usr/bin/ps
[root@localhost ~]# ls -l /usr/bin/ps
-rwxr-xr-x 1 root root 137672  3月 15  2020 /usr/bin/ps

4、重新使用 dmdba 用户执行 ps 命令以及 DmAPService 脚本,命令执行成功。

[dmdba@localhost bin]$ ps -ef|grep dmap
dmdba      74008   73545  0 18:19 pts/1    00:00:00 grep dmap
[dmdba@localhost bin]$ ./DmAPService start
Starting DmAPService:                                      [ OK ]
[dmdba@localhost bin]$ ps -ef|grep dmap
dmdba      74032       1  0 18:19 pts/1    00:00:00 /home/dmdba/dm46/bin/dmap
dmdba      74045   73545  0 18:19 pts/1    00:00:00 grep dmap

使用 systemctl 对数据库配置开机自启以及进程守护

【问题解决】

配置开机自启

---使用 root 用户进行执行脚本
cd /home/dmdba/dm/dmdbms/script/root/
./dm_service_installer.sh -s /home/dmdba/dm/dmdbms/bin/dmserverd

添加进程守护
编辑服务启动脚本/usr/lib/systemd/system/dmserverd.service
添加进程守护:将 type 类型修改成 forking,并设置 Restart=always,RestartSec=60。
配置完成后的文件内容如下:

cat /usr/lib/systemd/system/dmserverd.service
[Unit]
Description=Dameng Database Service(dmserverd).

[Service]
Type=forking
PIDFile=/home/dmdba/dm/dmdbms/bin/pids/dmserverd.pid
ExecStart=/home/dmdba/dm/dmdbms/bin/dmserverd start
ExecReload=/home/dmdba/dm/dmdbms/bin/dmserverd restart
ExecStop=/home/dmdba/dm/dmdbms/bin/dmserverd stop
PrivateTmp=true
Restart=always
RestartSec=60

[Install]
WantedBy=multi-user.target

---修改完成后执行如下配置生效配置:
systemctl enable dmserverd.service
systemctl daemon-reload 

测试进程守护

  • 利用 kill 杀掉数据库主进程,查看数据库是否恢复
    (1)查看数据库状态,kill 数据库进程

kill 数据库进程

(2)查看数据库状态,数据库进程恢复正常

查看数据库进程

  • 使用启动脚本进行关闭数据库,查看数据库是否恢复
    (1)使用 dmserverd 脚本停止数据库

停止数据库

(2)60s 后查看数据库进程,数据库恢复正常

查看数据库进程

微信扫码
分享文档
扫一扫
联系客服