注册

【改善提案】数据库实例服务的启停,通过服务方式与通过后台命令方式,协调一致,而不是水火不容

探月 2025/01/06 344 3

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】DM8
【操作系统】CentOS 8
【CPU】X86
【问题描述】
数据库实例服务自动启动,似乎已经与DmServiceGRP1_RT_02脱钩了,DmServiceGRP1_RT_02控制不了数据库实例服务

【改善提案】
数据库实例服务的启停,通过服务方式与通过后台命令方式,协调一致,而不是水火不容。

【测试总结之数据库守护进程服务】
数据库守护进程服务,通过注册的服务DmWatcherServiceWatcher,能够正常的启停。
[dmdba@dm09 ~]$ /dm/bin/DmWatcherServiceWatcher status
DmWatcherServiceWatcher (pid 1042) is running.
[dmdba@dm09 ~]$ /dm/bin/DmWatcherServiceWatcher stop
Stopping DmWatcherServiceWatcher: [ OK ]
[dmdba@dm09 ~]$ /dm/bin/DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher: [ OK ]
[dmdba@dm09 ~]$ /dm/bin/DmWatcherServiceWatcher status
DmWatcherServiceWatcher (pid 2066) is running.

【测试总结之数据库实例服务】
结论1:可以正常启停
[root@dm09 ~]# su - dmdba
[dmdba@dm09 ~]$ /dm/bin/DmServiceGRP1_RT_02 restart
Stopping DmServiceGRP1_RT_02: [ OK ]
Starting DmServiceGRP1_RT_02: [ OK ]

结论2:不能正常启停,即stop与start间隙不能超过10秒(应该是可以设定的,INST_ERROR_TIME = 20,不是这个值,可以说说具体是哪个参数吗?),超过这个阈值,数据库实例服务就会被自动拉起。
[dmdba@dm09 ~]$ date && /dm/bin/DmServiceGRP1_RT_02 stop
Mon Jan 6 18:28:55 CST 2025
Stopping DmServiceGRP1_RT_02: [ OK ]
[dmdba@dm09 ~]$ date && /dm/bin/DmServiceGRP1_RT_02 start
Mon Jan 6 18:29:27 CST 2025
Starting DmServiceGRP1_RT_02: [ FAILED ]

结论3:与结论2一致。
数据库实例服务异常,比如kill掉

【演示步骤】
[dmdba@dm09 ~]$ cat /dmdata/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 20
INST_ERROR_TIME = 20
INST_RECOVER_TIME = 60
INST_OGUID = 45331
INST_INI = /dmdata/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

步骤1 开机检查数据库实例服务的状态
[root@dm09 ~]# su - dmdba
[dmdba@dm09 ~]$ /dm/bin/DmServiceGRP1_RT_02 status
DmServiceGRP1_RT_02 (pid 1040) is running.

步骤2 停止数据库实例服务
[dmdba@dm09 ~]$ /dm/bin/DmServiceGRP1_RT_02 stop
Stopping DmServiceGRP1_RT_02: [ OK ]
[dmdba@dm09 ~]$ /dm/bin/DmServiceGRP1_RT_02 status
DmServiceGRP1_RT_02 is stopped

步骤3 启动数据库实例服务
[dmdba@dm09 ~]$ /dm/bin/DmServiceGRP1_RT_02 start
Starting DmServiceGRP1_RT_02: [ FAILED ]
[dmdba@dm09 ~]$ /dm/bin/DmServiceGRP1_RT_02 status
DmServiceGRP1_RT_02 is stopped
[dmdba@dm09 ~]$ /dm/bin/DmServiceGRP1_RT_02 stop
DmServiceGRP1_RT_02 service is stopped.

2025-01-06 18:22:02.665 [INFO] database P0000003433 T0000000000000003433 INI parameter DW_PORT changed, the original value 0, new value 5536
2025-01-06 18:22:02.737 [INFO] database P0000003433 T0000000000000003433 INI parameter DPC_2PC changed, the original value 1, new value 0
2025-01-06 18:22:02.848 [INFO] database P0000003433 T0000000000000003433 version info: develop
2025-01-06 18:22:02.910 [WARNING] database P0000003433 T0000000000000003433 os_sema2_create_low, exist other server is running, sema_value:2, after dec:1, errno:107!
2025-01-06 18:22:02.911 [INFO] database P0000003433 T0000000000000003433 Create semaphore for path[/dmdata/DAMENG] failed, it is being startup by other process!
2025-01-06 18:22:02.911 [FATAL] database P0000003433 T0000000000000003433 instance GRP1_RT_02 is running.

由于dmwatcher.ini配置自动重启,当数据库实例停止后,会通过命令"/dm/bin/dmserver /dmdata/DAMENG/dm.ini mount"自动重启。
[dmdba@dm09 ~]$ ps -ef |grep dm/
dmdba 1041 1 0 16:35 ? 00:00:00 /dm/bin/dmap dmap_ini=/dm/bin/dmap.ini
dmdba 1042 1 0 16:35 ? 00:00:13 /dm/bin/dmwatcher path=/dmdata/DAMENG/dmwatcher.ini -noconsole
dmdba 1733 1 0 17:27 ? 00:00:05 /dm/bin/dmserver /dmdata/DAMENG/dm.ini mount

但是通过以下方式检查,缺少stopped
[dmdba@dm09 ~]$ /dm/bin/DmServiceGRP1_RT_02 status
DmServiceGRP1_RT_02 is stopped

疑问1:后续怎么启停数据库实例服务?

疑问2:数据库实例服务自动启动,似乎已经与DmServiceGRP1_RT_02脱钩了,DmServiceGRP1_RT_02控制不了数据库实例服务。

【尝试解决方案1】禁止通过命令启动,通过服务DmServiceGRP1_RT_02启动
结论:虽然在dmwatcher.ini文件中禁止命令方式启动,但是还是通过命令方式启动。而不是通过服务方式启动,有点较劲。
步骤1
[dmdba@dm09 ~]$ cat /dmdata/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 20
INST_ERROR_TIME = 20
INST_RECOVER_TIME = 60
INST_OGUID = 45331
#INST_INI = /dmdata/DAMENG/dm.ini
INST_AUTO_RESTART = 1
#INST_STARTUP_CMD = /dm/bin/dmserver
INST_STARTUP_CMD = /dm/bin/DmServiceGRP1_RT_02 start
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

步骤2 直接kill掉数据实例
[root@dm09 ~]# ps -ef |grep dm/
dmdba 1017 1 0 18:24 ? 00:00:00 /dm/bin/dmap dmap_ini=/dm/bin/dmap.ini
dmdba 1018 1 0 18:24 ? 00:00:02 /dm/bin/dmwatcher path=/dmdata/DAMENG/dmwatcher.ini -noconsole
dmdba 2433 1 10 18:34 ? 00:00:01 /dm/bin/dmserver /dmdata/DAMENG/dm.ini mount
root 2572 1444 0 18:34 pts/1 00:00:00 grep --color=auto dm/
[root@dm09 ~]#
[root@dm09 ~]# kill -9 2433
[root@dm09 ~]# ps -ef |grep dm/
dmdba 1017 1 0 18:24 ? 00:00:00 /dm/bin/dmap dmap_ini=/dm/bin/dmap.ini
dmdba 1018 1 0 18:24 ? 00:00:02 /dm/bin/dmwatcher path=/dmdata/DAMENG/dmwatcher.ini -noconsole
root 2574 1444 0 18:34 pts/1 00:00:00 grep --color=auto dm/
[root@dm09 ~]# ps -ef |grep dm/
dmdba 1017 1 0 18:24 ? 00:00:00 /dm/bin/dmap dmap_ini=/dm/bin/dmap.ini
dmdba 1018 1 0 18:24 ? 00:00:02 /dm/bin/dmwatcher path=/dmdata/DAMENG/dmwatcher.ini -noconsole
dmdba 2588 1 0 18:35 ? 00:00:00 /dm/bin/dmwatcher path=/dmdata/DAMENG/dmwatcher.ini -noconsole
root 2590 1444 0 18:35 pts/1 00:00:00 grep --color=auto dm/

[dmdba@dm09 ~]$ /dm/bin/DmServiceGRP1_RT_02 status
DmServiceGRP1_RT_02 is stopped

回答 0
暂无回答
扫一扫
联系客服