注册
DM8主备集群升级操作流程
专栏/技术分享/ 文章详情 /

DM8主备集群升级操作流程

Coisini. 2025/09/26 135 0 0
摘要

和单机升级很类似,只是升级流程的复杂度更高一点。

一、升级前检查

1. 查询升级前、升级后版本号

-- DM数据库信息查询脚本
SELECT BANNER FROM V$VERSION;

-- 在dmdbms/bin下执行
./disql -id

例如,

升级前版本:

v8. 1-1-144-20.11.06-129436-ENT Pack1

升级后版本:

v8. 1-2-94-21.11.11-150650-10038-ENT

2. 检查升级安装包与环境是否匹配

-- 系统信息查询
getconf LONG_BIT  # 获取系统位数

cat /etc/os-release | grep "PRETTY_NAME"  # 查询操作系统

cat /proc/version  # 查询系统

lscpu  # 查询CPU型号

cat /proc/cpuinfo|grep "physical id"|sort|uniq|wc -l  # CPU个数

free -h   #查询内存

df -h   #快速查看所有磁盘空间

du -sh * #查询目录下所有项目的大小

fdisk -l #查询所有物理磁盘

netstat -tunlp | grep <进程名或端口号>  #查询端口号

hostname -I  #查询本机ip

如果操作系统与cpu不匹配,需要获取到匹配的安装包再执行后续步骤。

3. 退出数据库所有相关应用服务

4. 检查数据库

ps -ef|grep dmserver

确认数据库服务目前为启动状态,并了解清楚达梦软件安装目录与数据库实例目录的所在位置。

ps -ef | grep dmmonitor

查看监视进程。

su - dmdba
cd  /opt/dm8/dmdbms/bin
./dmmonitor /opt/dm8/data/dmmonitor_standby.ini

前台启动非确认监视器查看数据库状态。

监视器指令:

-- 登录监视器(输入用户名密码)
login
-- 查看集群拓扑状态
show
-- 检查集群健康状态
tip
-- 手动切换主备角色(需先执行login)
switchover <主库名> <备库名>

5. 检查数据库连接

确保应用连接处于关闭或备份期间没有数据变更操作。

./disql SYSDBA:5236
密码

检查数据RLOG路径,检查文件是否存在:
select group_id, file_id,path,create_time,round(rlog_size/1024/1024,2) as "RLOG_SIZE(MB)" from v$rlogfile;

--检查归档文件,是否均在库目录下,如果不在需要备份
SELECT * FROM V$ARCH_FILE;
--检查归档文件,最后升级前需mv下整个归档目录
SELECT * FROM V$ARCH_FILE;

检查表空间状态&路径,确定路径升级前后保持一致:
select * from v$tablespace; --关注STATUS$字段

--检查数据文件,是否均在库目录下,如果不在需要备份
SELECT * from dba_data_files;
--关注文件是否存在,保障升级前后保持一致

SQL>  select * from v$sessions;
-- 检查是否还存在应用连接;
SQL>  select * from v$purge;
-- 检查是否存在待PURGE事务
SQL>  checkpoint(100); 
-- 主动做检查点刷盘

-- 如果应用无法关闭连接,则进行锁用户,并清理历史会话操作
select username from dba_users;
alter user WZ ACCOUNT LOCK;

begin
 	for a in  (select sess_id from v$sessions 
	) loop
		execute immediate 'sp_cancel_session_operation ('''||a.SESS_ID||''')';
 		execute immediate 'sp_close_session ('''||a.SESS_ID||''')';
 	end loop;
end;

ALTER USER WZ ACCOUNT UNLOCK;

6. 备份数据库

和单机升级的不同点在于主备集群备份不可以脱机备份,只能联机热备。

检查dmap服务的状态:

ps –ef | grep dmap

若服务不存在,先去bin目录下启动AP服务。

su - dmdba
cd  /opt/dm8/dmdbms/bin
./DmAPService start

如果出现报错:dmap init failed, code[-7157]: 管道文件已存在,解决方法为:

mv /opt/dm8/dmdbms/bin/DM_PIPE_DMAP_LSNR_* /tmp/

需要主备节点登录数据库都进行物理备份:

cd /opt/dm8/dmdbms/bin
nohup ./disql 用户名/密码:32141  -e "backup database backupset '/opt/dm8/data/bak_hot_20220804'; " &
--检查备份是否完成
1)ps -ef|grep 'backup database'
  #如果备份进程不存在,则表示备份完成
2)查看备份日志,是否完成备份,日志文件为dm_BAKRES_年月.log
tail -f dmdbms/log/dm_BAKRES_202207.log
CMD END.CODE:[0],COST:[00:00:01]表示完成备份

7. 停数据库服务

停止数据库集群关闭数据库服务:
cd /opt/dm8/dmdbms/bin

停止集群监视器:
./DmMoniotrServiceGRP1 stop

停止备机守护进程:
./DmWatcherServiceGRP1_RT_02 stop

停止主机守护进程:
./DmWatcherServiceGRP1_RT_01 stop

停止主机数据库服务:
./DmServiceGRP1_RT_01 stop

停止备机数据库服务:
./DmServiceGRP1_RT_02 stop 

关闭所有数据库AP服务:
./DmAPService stop

二、备份数据库

主库和备库都需要执行,如果监视器在第三台机器上,监视机也需要执行本步骤。

1. 备份原数据库软件目录

# 各个节点备份数据库软件目录
cd  /opt/dm8/
mv dmdbms dmdbms_old_bak

2. 备份原库实例目录

# 物理备份数据库实例目录(可选)
nohup cp -rpf /opt/dm8/data/DAMENG /opt/dm8/data/DAMENG_old_bak &

#如果备份进程不存在,则表示备份完成
ps -ef|grep 'cp -rpf'

# copy 校验,比较各个文件的字节信息
ls -l /opt/dm8/data/DAMENG*

三、安装新版本数据库

安装新版本数据库主机和备机都需要安装,如果监视器在第三台机器上,监视机也需要安装新版本数据库。

安装到原数据库软件所在目录,推荐使用dmdba用户安装,用root安装的话,安装好后需要修改数据库软件所属组chown -R dmdba:dinstall /opt/dm8

安装前建议先停DmAPServers服务。

ps -ef | grep dmap
./DmAPService status
./DmAPService stop

安装过程见《DM8在linux环境下的单机部署》第二章。

四、拷贝原服务脚本到新版本中

数据库服务启动后,检查下达梦AP服务./DmAPService status,如果AP服务没启动则启动一下。

主库:

cd /opt/dm8/bak_dmdbms/bin
cp -r DmServiceGRP1_RT_01 /opt/dm8/dmdbms/bin
cp -r DmWatcherServiceGRP1_RT_01 /opt/dm8/dmdbms/bin
cd ../../dmdbms/bin
chown -R dmdba:dinstall *

备库:

cd /opt/dm8/bak_dmdbms/bin
cp -r DmServiceGRP1_RT_02 /opt/dm8/dmdbms/bin
cp -r DmWatcherServiceGRP1_RT_02 /opt/dm8/dmdbms/bin
cd ../../dmdbms/bin
chown -R dmdba:dinstall *

监视机:

cd /opt/dm8/bak_dmdbms/bin
cp -r DmMonitorServiceGRP1 /opt/dm8/dmdbms/bin
cd ../../dmdbms/bin
chown -R dmdba:dinstall *

如果存在dm.key文件也需要拷贝进新的安装目录/bin下。

如果数据文件在bak_dmdbms下,也需要把data拷贝回来。

五、启动数据库服务

cd /opt/dm8/dmdbms/bin

启动主机数据库服务:
./DmServiceGRP1_RT_01 start

启动备机数据库服务:
./DmServiceGRP1_RT_02 start

启动主机守护服务:
./DmWatcherServiceGRP1_RT_01 start

启动备机守护服务:
./DmWatcherServiceGRP1_RT_02 start

启动集群监视器:
./DmMoniotrServiceGRP1 start

启动所有数据库AP服务:
./DmAPService start

前台启动非确认监视器查看数据库状态。

cd /opt/dm8/dmdbms/bin
./dmmonitor /opt/dm8/data/dmmonitor_standby.ini

主库登录disql查询版本:

-- DM数据库信息查询脚本
SELECT BANNER FROM V$VERSION;

-- 在dmdbms/bin下执行
./disql -id

六、重建视图及系统包

sp_create_system_views(0);
sp_create_system_views(1);
SP_CREATE_SYSTEM_PACKAGES(0);
SP_CREATE_SYSTEM_PACKAGES(1);
select * from user_procedures;

如果出现系统包对象重建失败的警告,查看

SELECT * from v$dm_ini where para_name like 'COMPATIBLE_MODE';

COMPATIBLE_MODE不为0时,先改成0,再进行重建:

ALTER SYSTEM SET 'COMPATIBLE_MODE'=0 SPFILE;

重建完毕后,再还原COMPATIBLE_MODE的值。

七、更新数据库统计信息

--对库上所有模式下的所有用户表以及表上的所有索引生成统计信息
call sp_db_stat_init();
--收集指定模式下统计信息集合和直方图信息。
call DBMS_STATS.gather_schema_stats('用户名',100);
--第一个参数:模式名,第二个参数:收集比例

八、导入dm.key

将.key文件导入新的bin目录下后,如果原始文件名不是dm.key,需要更改为dm.key。

登录disql,执行sp_load_lic_info()

确认许可证授权:

select server_series,server_type,expired_date,authorized_customer,series_no from v$license;

视图v$license字段信息说明

  • server_series
    服务器颁布类型。P:个人版;S:标准版;E:企业版
  • server_type
    服务器发布类型。1:正式版;2:测试版;3:试用版
  • expired_date
    有效日期。非正式版本:有到期日;正式版本:NULL
  • authorized_customer
    用户名称。
  • series_no
    序列号。

九、启动应用服务测试功能

十、附录

1. 回退机制

回退时监视器也需要回退。

停止数据库集群:

集群停止顺序:
cd  /opt/dm8/dmdbms/bin
停止集群监视器 : 
./DmMonitorServiceGRP1 stop

停止备机守护进程:
./DmWatcherServiceGRP1_RT_02 stop

停止主机守护进程:
./DmWatcherServiceGRP1_RT_01 stop

停止主机数据库服务:
./DmServiceGRP1_RT_01 stop

停止备机数据库服务:
./DmServiceGRP1_RT_02 stop

保留升级错误实例

nohup mv /data/dmdata/DAMENG /data/dmdata/DAMENG_faild &

恢复原始数据库软件

cd /opt/dm8
mv dmdbms dmdbms_faild
mv dmdbms_old_bak dmdbms

回退备份数据库

方法一、物理copy,恢复原始实例
nohup mv /opt/dm8/data/DAMENG  /opt/dm8/data/DAMENG_old_bak &
nohup cp -r  /opt/dm8/data/DAMENG_old_bak  /opt/dm8/data/DAMENG &

方法二、备份集恢复
su - dmdba
cd /opt/dm8/dmdbms/bin
./DmAPService start
./dmrman
restore database '/opt/dm8/data/DAMENG/dm.ini' from backupset '/opt/dm8/data/bak_hot_20220804'
recover database '/opt/dm8/data/DAMENG/dm.ini' from backupset '/opt/dm8/data/bak_hot_20220804'
recover database '/opt/dm8/data/DAMENG/dm.ini'  update db_magic;

启动旧版本的数据库集群:

su - dmdba
cd  /home/dmdbm/dmdbms/bin

启动主机数据库服务:
./DmServiceGRP1_RT_01 start

启动备机数据库服务:
./DmServiceGRP1_RT_02 start

启动主机守护服务:
./DmWatcherServiceGRP1_RT_01 start

启动备机守护服务:
./DmWatcherServiceGRP1_RT_02 start

启动备机守护服务:
./DmWatcherServiceGRP1_RT_03 start

前台启动监视器服务确认集群状态:
./dmmonitor /data/mon/dmmonitor.ini

show
tip
集群正常,exit退出前台监视器,后台启动监视器服务。
./DmMonitorServiceGRP1 start
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服