在之前的博客,我们测试了DM 8.1.1.19升级到8.1.1.48 的升级,如下:
DM 达梦数据库 版本升级 说明与测试
https://www.cndba.cn/Dave/article/3904
达梦8中版本号查看说明参考:
DM8 达梦数据库 查看数据库版本号 方法
https://www.cndba.cn/dave/article/4260达梦数据库 DM8 (8.1.1.126/20200907) 安装文件 下载地址
https://www.cndba.cn/dave/article/4295
我们这里记录下 8.1.1.48 升级到 8.1.1.126 操作步骤,小版本的升级步骤都是一样的,直接替换bin目录。
查看当前版本:
[dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA@127.0.0.1:6236
服务器[127.0.0.1:6236]:处于普通打开状态
登录使用时间: 10.808(毫秒)
disql V8
SQL> select id_code;
行号 ID_CODE
---------- ---------------------------
1 1-1-48-19.11.29-116408-ENT
已用时间: 1.025(毫秒). 执行号:79.
SQL> select * from v$version;
行号 BANNER
---------- -------------------------
1 DM Database Server 64 V8
2 DB Version: 0x7000a
已用时间: 17.198(毫秒). 执行号:80.
SQL>
停止所有达梦实例(btw:测试环境,直接暴力了):
[root@www.cndba.cn ~]# ps -ef|grep dm.ini
root 63793 4955 0 16:20 pts/7 00:00:00 grep --color=auto dm.ini
dmdba 83274 1 0 11:39 ? 00:01:02 /dm/dmdbms/bin/dmserver /dm/dmdbms/data/ustc/dm.ini -noconsole
dmdba 116152 1 0 11:46 pts/3 00:01:05 /dm/dmdbms/bin/dmserver /dm/dmdbms/data/ustc2/dm.ini -noconsole
dmdba 125345 1 0 05:24 ? 00:02:14 /dm/dmdbms/bin/dmserver /dm/dmdbms/data/cndba/dm.ini -noconsole
[root@www.cndba.cn ~]# kill -9 83274 116152 125345
[root@www.cndba.cn ~]# ps -ef|grep dm.ini
root 65020 4955 0 16:20 pts/7 00:00:00 grep --color=auto dm.ini
[root@www.cndba.cn ~]#
在上篇升级中我们还单独安装了一份。 这里我们直接用7zip 工具将官网的iso文件中的bin目录解压出来。 我这里直接用MobaXterm 上传了。
修改bin 目录权限:
[root@www.cndba.cn dmdbms]# pwd
/dm/dmdbms
[root@www.cndba.cn dmdbms]# ll -ls
12 drwxr-xr-x 8 root root 8192 12月 1 16:25 bin
[root@www.cndba.cn dmdbms]# chown -R dmdba:dinstall bin
[root@www.cndba.cn dmdbms]# chmod a+x bin -R
[root@www.cndba.cn dmdbms]# ll -ls
12 drwxr-xr-x 8 dmdba dinstall 8192 12月 1 16:25 bin
启动达梦实例,查看版本信息:
[root@www.cndba.cn system]# systemctl start DmServiceDAVE.service
Job for DmServiceDAVE.service failed because the control process exited with error code. See "systemctl status DmServiceDAVE.service" and "journalctl -xe" for details.
[root@www.cndba.cn system]# systemctl status DmServiceDAVE.service
● DmServiceDAVE.service - Dameng Database Service(DmServiceDAVE).
Loaded: loaded (/usr/lib/systemd/system/DmServiceDAVE.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 二 2020-12-01 16:34:16 CST; 11s ago
Process: 64906 ExecStop=/dm/dmdbms/bin/DmServiceDAVE stop (code=exited, status=0/SUCCESS)
Process: 124486 ExecStart=/dm/dmdbms/bin/DmServiceDAVE start (code=exited, status=203/EXEC)
Main PID: 125345 (code=killed, signal=KILL)
12月 01 16:34:16 study systemd[1]: Starting Dameng Database Service(DmServiceDAVE)....
12月 01 16:34:16 study systemd[124486]: Failed at step EXEC spawning /dm/dmdbms/bin/DmServiceDAVE: No such file or directory
12月 01 16:34:16 study systemd[1]: DmServiceDAVE.service: control process exited, code=exited status=203
12月 01 16:34:16 study systemd[1]: Failed to start Dameng Database Service(DmServiceDAVE)..
12月 01 16:34:16 study systemd[1]: Unit DmServiceDAVE.service entered failed state.
12月 01 16:34:16 study systemd[1]: DmServiceDAVE.service failed.
[root@www.cndba.cn system]#
这里启动报错,提示bin 目录下没有DmServiceDAVE 文件。 这里可以直接注册个服务,也可以从备份的bin目录中复制过来。
达梦数据库 DM8 中 注册服务 说明
https://www.cndba.cn/dave/article/3753
我这直接复制过来启动还是一样的错误,尝试手工重新注册下:
[root@www.cndba.cn bin.bak]# cd /dm/dmdbms/script/root/
[root@www.cndba.cn root]# ls
dm_service_installer.sh dm_service_uninstaller.sh root_installer.sh
[root@www.cndba.cn root]#
[root@www.cndba.cn root]#
[root@www.cndba.cn root]# ./dm_service_installer.sh -t dmserver -p dave -dm_ini /dm/dmdbms/data/cndba/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedave.service to /usr/lib/systemd/system/DmServicedave.service.
创建服务(DmServicedave)完成
[root@www.cndba.cn root]# systemctl start DmServicedave.service
Job for DmServicedave.service failed because the control process exited with error code. See "systemctl status DmServicedave.service" and "journalctl -xe" for details.
[root@www.cndba.cn root]# systemctl status DmServicedave.service
● DmServicedave.service - Dameng Database Service(DmServicedave).
Loaded: loaded (/usr/lib/systemd/system/DmServicedave.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 二 2020-12-01 16:49:36 CST; 11s ago
Process: 62920 ExecStart=/dm/dmdbms/bin/DmServicedave start (code=exited, status=1/FAILURE)
12月 01 16:49:36 study systemd[1]: Starting Dameng Database Service(DmServicedave)....
12月 01 16:49:36 study DmServicedave[62920]: mkdir: 无法创建目录"_REPLACE_SELF_DM_HOME": 权限不够
12月 01 16:49:36 study DmServicedave[62920]: chown: 无法访问"_REPLACE_SELF_DM_HOME/log": 没有那个文件或目录
12月 01 16:49:36 study DmServicedave[62920]: mkdir: 无法创建目录"_REPLACE_SELF_DM_HOME": 权限不够
12月 01 16:49:36 study DmServicedave[62920]: chown: 无法访问"_REPLACE_SELF_DM_HOME/bin/pids": 没有那个文件或目录
12月 01 16:49:36 study DmServicedave[62920]: please change or root to execute the service script, otherwise may be failed !
12月 01 16:49:36 study systemd[1]: DmServicedave.service: control process exited, code=exited status=1
12月 01 16:49:36 study systemd[1]: Failed to start Dameng Database Service(DmServicedave)..
12月 01 16:49:36 study systemd[1]: Unit DmServicedave.service entered failed state.
12月 01 16:49:36 study systemd[1]: DmServicedave.service failed.
[root@www.cndba.cn root]#
这里提示权限问题,实际上我们已经用root用户执行的这个脚本。
这里手工启动数据库:
[dave@www.cndba.cn dmdbms]$ dmserver /dm/dmdbms/data/cndba/dm.ini
file dm.key not found, use default license!
version info: develop
Upgrade is not allowed, please startup with origin dmserver(sys_version:V7.1.7.48, db_version:0x7000A) and shutdown normal, then try again!
[dave@www.cndba.cn dmdbms]$
这里的提示就很清楚了,数据库升级必须通过正常的关闭,才能升级。 所以我们这里先恢复旧版本,正常启动并关闭后在升级。
此时手工启动已经没有问题,我们验证下版本:
[dave@www.cndba.cn dmdbms]$ dmserver /dm/dmdbms/data/cndba/dm.ini
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-126-20.09.04-126608-ENT startup...
Database mode = 0, oguid = 0
License will expire on 2021-09-04
file lsn: 80564
ndct db load finished
ndct fill fast pool finished
iid page's trxid[13025]
NEXT TRX ID = 13026
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.
[dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA@127.0.0.1:6236
服务器[127.0.0.1:6236]:处于普通打开状态
登录使用时间 : 2.136(ms)
disql V8
SQL> select id_code;
行号 ID_CODE
---------- ----------------------------
1 1-1-126-20.09.04-126608-ENT
已用时间: 1.271(毫秒). 执行号:43.
SQL>
SQL> select * from v$version;
行号 BANNER
---------- -------------------------
1 DM Database Server 64 V8
2 DB Version: 0x7000b
已用时间: 1.009(毫秒). 执行号:44.
SQL>
版本升级成功。 但是服务这块还是有问题:
[root@www.cndba.cn dmdbms]# cd script/root/
[root@www.cndba.cn root]# ./dm_service_installer.sh -t dmserver -p dave -dm_ini /dm/dmdbms/data/cndba/dm.ini
创建服务(DmServicedave)完成
[root@www.cndba.cn root]# systemctl start DmServicedave
Job for DmServicedave.service failed because the control process exited with error code. See "systemctl status DmServicedave.service" and "journalctl -xe" for details.
[root@www.cndba.cn root]# systemctl status DmServicedave
● DmServicedave.service - Dameng Database Service(DmServicedave).
Loaded: loaded (/usr/lib/systemd/system/DmServicedave.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 二 2020-12-01 17:31:44 CST; 5s ago
Process: 116807 ExecStart=/dm/dmdbms/bin/DmServicedave start (code=exited, status=1/FAILURE)
12月 01 17:31:44 study systemd[1]: Starting Dameng Database Service(DmServicedave)....
12月 01 17:31:44 study DmServicedave[116807]: mkdir: 无法创建目录"_REPLACE_SELF_DM_HOME": 权限不够
12月 01 17:31:44 study DmServicedave[116807]: chown: 无法访问"_REPLACE_SELF_DM_HOME/log": 没有那个文件或目录
12月 01 17:31:44 study DmServicedave[116807]: mkdir: 无法创建目录"_REPLACE_SELF_DM_HOME": 权限不够
12月 01 17:31:44 study DmServicedave[116807]: chown: 无法访问"_REPLACE_SELF_DM_HOME/bin/pids": 没有那个文件或目录
12月 01 17:31:44 study DmServicedave[116807]: please change or root to execute the service script, otherwise may be failed !
12月 01 17:31:44 study systemd[1]: DmServicedave.service: control process exited, code=exited status=1
12月 01 17:31:44 study systemd[1]: Failed to start Dameng Database Service(DmServicedave)..
12月 01 17:31:44 study systemd[1]: Unit DmServicedave.service entered failed state.
12月 01 17:31:44 study systemd[1]: DmServicedave.service failed.
[root@www.cndba.cn root]# ls
dm_service_installer.sh dm_service_uninstaller.sh _REPLACE_SELF_DM_HOME root_installer.sh
[root@www.cndba.cn root]#
该错误的处理过程参考如下博客:
DM 达梦数据库 创建服务 无法创建目录”_REPLACE_SELF_DM_HOME” 错误解决方法
https://www.cndba.cn/dave/article/4313
[root@www.cndba.cn root]# /dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmServicedave
是否删除服务(DmServicedm)?(Y/y:是 N/n:否): y
未发现服务文件(/usr/lib/systemd/system/DmServicedm.service或/etc/systemd/system/DmServicedm.service)!
[root@www.cndba.cn root]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -p dave -dm_ini /dm/dmdbms/data/cndba/dm.ini
创建服务(DmServicedave)完成
[root@www.cndba.cn root]# systemctl start DmServicedave.service
Job for DmServicedave.service failed because the control process exited with error code. See "systemctl status DmServicedave.service" and "journalctl -xe" for details.
[root@www.cndba.cn root]# systemctl status DmServicedave.service
● DmServicedave.service - Dameng Database Service(DmServicedave).
Loaded: loaded (/usr/lib/systemd/system/DmServicedave.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 二 2020-12-01 19:01:47 CST; 4s ago
Process: 129728 ExecStart=/dm/dmdbms/bin/DmServicedave start (code=exited, status=1/FAILURE)
12月 01 19:01:47 study systemd[1]: Starting Dameng Database Service(DmServicedave)....
12月 01 19:01:47 study DmServicedave[129728]: please change or root to execute the service script, otherwise may be failed !
12月 01 19:01:47 study systemd[1]: DmServicedave.service: control process exited, code=exited status=1
12月 01 19:01:47 study systemd[1]: Failed to start Dameng Database Service(DmServicedave)..
12月 01 19:01:47 study systemd[1]: Unit DmServicedave.service entered failed state.
12月 01 19:01:47 study systemd[1]: DmServicedave.service failed.
[root@www.cndba.cn root]# systemctl start DmServicedave.service
[root@www.cndba.cn root]# systemctl status DmServicedave.service
● DmServicedave.service - Dameng Database Service(DmServicedave).
Loaded: loaded (/usr/lib/systemd/system/DmServicedave.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2020-12-01 19:09:03 CST; 5s ago
Process: 27923 ExecStop=/dm/dmdbms/bin/DmServicedave stop (code=exited, status=0/SUCCESS)
Process: 31658 ExecStart=/dm/dmdbms/bin/DmServicedave start (code=exited, status=0/SUCCESS)
Main PID: 31683 (dmserver)
Tasks: 25
CGroup: /system.slice/DmServicedave.service
└─31683 /dm/dmdbms/bin/dmserver /dm/dmdbms/data/cndba/dm.ini -noconsole
12月 01 19:08:48 study systemd[1]: Starting Dameng Database Service(DmServicedave)....
12月 01 19:09:03 study DmServicedave[31658]: [35B blob data]
12月 01 19:09:03 study systemd[1]: Started Dameng Database Service(DmServicedave)..
[root@www.cndba.cn root]#
实际上,这里还有个小细节,就是在同一台机器上安装两次会影响到DM_HOME变量,所以在创建服务后如果无法启动,记得修改服务文本里的变量。
[root@www.cndba.cn bin]# pwd
/dm/dmdbms/bin
[root@www.cndba.cn bin]# more DmServicedave
#!/bin/sh
#
#
# This shell script takes care of starting and stopping
# the Dameng DmServiceXXX.
#
# chkconfig: 2345 98 2
# description: Dameng Database Service.
# service name: DmServiceXXX
# pidfile: $DM_BIN_DIR/pids/$CUR_SERVICE_NAME.pid
# version: V8.0.0.0
### BEGIN INIT INFO
# Provides: DmServicedave
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop database service
### END INIT INFO
DM_HOME="/dm/dmdbms"
INI_PATH="/dm/dmdbms/data/cndba/dm.ini"
DCR_INI_PATH=%DCR_INI_PATH%
……
小结:
- 升级数据库之前必须正常关闭实例,否则无法升级。
- 替换的bin目录,需要注意权限问题,否则会导致服务无法正常使用,虽然手工通过dmserver启动实例没有影响。
- 如果是通过静默安装来解压新iso文件,要注意环境变量的问题,因为新的bin会使用新的DM_HOME。 需要检查服务文件,如有必要进行对应修改。
版权声明:本文为博主原创文章,未经博主允许不得转载。