注册
DSC(主)-DSC(备)集群滚动升级
培训园地/ 文章详情 /

DSC(主)-DSC(备)集群滚动升级

大萌￿ 2026/08/19 223 0 0

# 一、环境配置

本文以两节点DSC(主)-两节点DSC(备)为例进行滚动升级测试。数据守护环境中的DSC,即DSC-单机备库或DSC-DSC备库架构下,DSC必须作为一个整体升级,所以滚动升级方案为:升级备库DSC所有节点>>主备切换>>升级原主库所有DSC节点>>主备回切。

1.1 服务器配置

image.png

1.2 实例信息

image.png

1.3 dm_svc.conf配置

LANGUAGE=(cn)
CHAR_CODE=(PG_UTF8)
TIME_ZONE=(+480) #表示+8:00 时区
DMDSC=(192.168.63.200:5236,192.168.63.202:5236,192.168.63.201:5236,192.168.63.203:5236)
[DMDSC]
CLUSTER=(DSC)
LOGIN_MODE=(1) 
EP_SELECTOR=(1)  
AUTO_RECONNECT=(2)
FAIL_OVER_WAIT=(FALSE)
SWITCH_TIMES=(50)
SWITCH_INTERVAL=(200)

# 二、查看版本是否支持滚动升级

利用函数获取DSC/数据守护滚动升级版本号,若版本号一致的两个版本则允许进行滚动升级。
原始版本8.1.4.80
image.png
待升级版本8.1.5.60
image.png
查询结果返回值中,dsc[1]:代表DSC滚动升级版本号为1,dw1[1]:代表数据守护滚动升级版本号为1,两个版本号均一致,可支持滚动升级。

# 三、jmeter配置

在升级过程中配置jmeter压测,来模拟实际生产中业务系统不停机的情况。
1、在达梦数据库中创建测试表

create table dsc_test(c_time timestamp,name varchar(20));
insert into dsc_test values(sysdate(),(select name from v$instance));
commit;

2、jmeter设置线程数与insert语句,模拟并发INSERT操作:
image.png
image.png
image.png

# 四、数据库备份

升级前一定要做好检查和数据库备份工作,对于数据量较大的库,可以通过nohup后台跑备份语句,避免连接断开:

nohup disql / as sysdba -e "BACKUP DATABASE FULL  BACKUPSET '/backup/FULL_20260731' compressed  level  1   TASK  THREAD  64  PARALLEL  8" &

# # 五、集群滚动升级

整个升级过程中业务不停机,升级通过更换执行码方式实现。

5.1 升级备库DSC

5.1.1 登录监视器检查集群状态

cd /home/dmdba/dmdbms/bin
./dmmonitor /dm/config/dmmonitor.ini

image.png

5.1.2 停止备库DSC两节点数据库

DSC04节点:

cd /home/dmdba/dmdbms/bin
./DmWatcherServiceDMWATCHER stop
./disql SYSDBA/'"Sysdba@123"'
SQL> checkpoint(100); 
SQL> shutdown immediate;
--注意:备库DSC任意一个节点正常停库后,所有节点均会共同退出,所以DSC03节点无需再执行停止数据库服务操作。
./DmASMSvrServiceASM stop
./DmCSSServiceCSS stop
./DmAPService stop
--生产环境DSC-DSC架构一般不配置确认监视器,会在备库上配置一个非确认监视器用来定时监控和记录日志,升级时需要停掉服务
./DmMonitorService stop

DSC03节点:

cd /home/dmdba/dmdbms/bin
./DmWatcherServiceDMWATCHER stop
./DmASMSvrServiceASM stop
./DmCSSServiceCSS stop
./DmAPService stop

5.1.3 备份原有的dmdbms,将新的dmdbms拷贝到指定目录下

DSC04节点:

--备份原有dmdbms下除tmp以外的其他目录,由于原有的tmp下临时表空间可能会很大,移动比较耗时,所以升级时不建议移动tmp目录
cd /home/dmdba/
mkdir dmdbms_bak0731
cd dmdbms
mv  !(tmp) /home/dmdba/dmdbms_bak0731/

--将新执行码拷贝到原有数据库安装目录/home/dmdba/dmdbms
./DMInstall.bin -i  
--执行后再单独开一个窗口执行以下操作:
cd /tmp/DMInstall/source/
mv  !(tmp) /home/dmdba/dmdbms
chown -R dmdba.dinstall /home/dmdba/dmdbms

DSC03节点:操作同上
image.png
image.png

5.1.4 将原有bin目录下的脚本、key文件等拷贝到新的bin目录下

DSC04节点、DSC03节点:

cd /home/dmdba/dmdbms_bak0731/bin
cp -r DmWatcherServiceDMWATCHER /home/dmdba/dmdbms/bin
cp -r DmServiceDSC /home/dmdba/dmdbms/bin
cp -r DmASMSvrServiceASM /home/dmdba/dmdbms/bin
cp -r DmCSSServiceCSS /home/dmdba/dmdbms/bin
cp -r DmMonitorService /home/dmdba/dmdbms/bin
cp -r disql_conf/ /home/dmdba/dmdbms/bin
cp -r dm.key /home/dmdba/dmdbms/bin
cp dmap.ini /home/dmdba/dmdbms/bin
--将原log日志移动到/home/dmdba/dmdbms下
mv  /home/dmdba/dmdbms_bak0731/log/ /home/dmdba/dmdbms/
--DmAP建议通过新版本脚本启动,需要调整下脚本中目录
cd /home/dmdba/dmdbms/bin
cp DmAPService DmAPService_bak
vi DmAPService	
DM_HOME="/home/dmdba/dmdbms"
DMAP_INI_PATH="/home/dmdba/dmdbms/bin/dmap.ini"

5.1.5 使用的新版本bin目录下脚本启动数据库

DSC04节点:

cd /home/dmdba/dmdbms/bin
./DmCSSServiceCSS start
./DmASMSvrServiceASM start
./DmServiceDSC start
./DmWatcherServiceDMWATCHER start
./DmAPService start
./DmMonitorService start

image.png
DSC03节点:

cd /home/dmdba/dmdbms/bin
./DmCSSServiceCSS start
./DmASMSvrServiceASM start
./DmServiceDSC start
./DmWatcherServiceDMWATCHER start
./DmAPService start

image.png
image.png

5.1.6 登录监视器查看集群状态

cd /home/dmdba/dmdbms/bin
./dmmonitor /dm/config/dmmonitor.ini

image.png

5.1.7 登录备库查看状态

DSC03节点:

cd /home/dmdba/dmdbms/bin
./disql SYSDBA/'"Sysdba@123"'
SQL> select id_code();
--[-719]:备库版本升级时不允许访问,该告警可忽略
SQL>checkpoint(100);
--[-719]:备库版本升级时不允许访问,该告警可忽略

image.png

5.2 主备切换

登录监视器手动切换DSC03/DSC04为主库

cd /home/dmdba/dmdbms/bin
login:输入用户名密码
switchover

image.png
image.png

主备切换过程中,JMETER业务大概中断4s,符合预期。切换完成后,业务恢复正常:
image.png

5.3 升级原主库DSC

5.3.1 停止原主库DSC两节点数据库

DSC01节点:

cd /home/dmdba/dmdbms/bin
./DmWatcherServiceDMWATCHER stop
./disql SYSDBA/'"Sysdba@123"'
SQL> checkpoint(100); 
SQL> shutdown immediate;
./DmASMSvrServiceASM stop
./DmCSSServiceCSS stop
./DmAPService stop

image.png
DSC02节点:

cd /home/dmdba/dmdbms/bin
./DmWatcherServiceDMWATCHER stop
./DmASMSvrServiceASM stop
./DmCSSServiceCSS stop
./DmAPService stop

5.3.2 备份DSC01和DSC02节点原有的dmdbms,并替换新的dmdbms

操作请参考5.1.3章节

5.3.3 将原有bin目录下的脚本、key文件等拷贝到新的bin目录下

操作请参考5.1.4章节

5.3.4 使用的新版本bin目录下脚本启动数据库

DSC01节点:

cd /home/dmdba/dmdbms/bin
./DmCSSServiceCSS start
./DmASMSvrServiceASM start
./DmServiceDSC start
./DmWatcherServiceDMWATCHER start
./DmAPService start

image.png
DSC02节点:
image.png

5.3.5 全部升级完成后,登录监视器查看集群状态

cd /home/dmdba/dmdbms/bin
./dmmonitor /dm/config/dmmonitor.ini

image.png

5.3.6 分别登录主库和备库查看数据库版本

主库DSC03:

cd /home/dmdba/dmdbms/bin
./disql SYSDBA/'"Sysdba@123"'
SQL> select id_code();

image.png
备库DSC01:

cd /home/dmdba/dmdbms/bin
./disql SYSDBA/'"Sysdba@123"'
SQL> select id_code();
--可正常返回结果,不再报错

image.png

5.4 将主库切换为DSC01/DSC02

cd /home/dmdba/dmdbms/bin
login:输入用户名密码
switchover

image.png

切换过程中业务中断3秒,切换完成后业务恢复正常,符合预期。
image.png

6.注意事项

生产环境进行滚动升级操作还需要注意以下事项:
1.升级前应用系统需要做好新版本数据库和驱动验证,确保升级后各功能模块使用正常,有条件的情况可先在测试环境进行压测,确认性能可满足需求;
2.升级后针对已开启的系统包进行重新启用;
3.函数索引、空间索引等若有条件,可在升级后进行重建(尤其版本跨度较大时);
4.升级前后确认inject注入情况、JOB运行情况以及单独授予的特殊权限,例如SELECT ON,ADMIN JOB等是否一致;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服