本文以两节点DSC(主)-两节点DSC(备)为例进行滚动升级测试。数据守护环境中的DSC,即DSC-单机备库或DSC-DSC备库架构下,DSC必须作为一个整体升级,所以滚动升级方案为:升级备库DSC所有节点>>主备切换>>升级原主库所有DSC节点>>主备回切。
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
待升级版本8.1.5.60
查询结果返回值中,dsc[1]:代表DSC滚动升级版本号为1,dw1[1]:代表数据守护滚动升级版本号为1,两个版本号均一致,可支持滚动升级。
在升级过程中配置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操作:
升级前一定要做好检查和数据库备份工作,对于数据量较大的库,可以通过nohup后台跑备份语句,避免连接断开:
nohup disql / as sysdba -e "BACKUP DATABASE FULL BACKUPSET '/backup/FULL_20260731' compressed level 1 TASK THREAD 64 PARALLEL 8" &
整个升级过程中业务不停机,升级通过更换执行码方式实现。
cd /home/dmdba/dmdbms/bin
./dmmonitor /dm/config/dmmonitor.ini
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
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节点:操作同上
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"
DSC04节点:
cd /home/dmdba/dmdbms/bin
./DmCSSServiceCSS start
./DmASMSvrServiceASM start
./DmServiceDSC start
./DmWatcherServiceDMWATCHER start
./DmAPService start
./DmMonitorService start
DSC03节点:
cd /home/dmdba/dmdbms/bin
./DmCSSServiceCSS start
./DmASMSvrServiceASM start
./DmServiceDSC start
./DmWatcherServiceDMWATCHER start
./DmAPService start
cd /home/dmdba/dmdbms/bin
./dmmonitor /dm/config/dmmonitor.ini
DSC03节点:
cd /home/dmdba/dmdbms/bin
./disql SYSDBA/'"Sysdba@123"'
SQL> select id_code();
--[-719]:备库版本升级时不允许访问,该告警可忽略
SQL>checkpoint(100);
--[-719]:备库版本升级时不允许访问,该告警可忽略
登录监视器手动切换DSC03/DSC04为主库
cd /home/dmdba/dmdbms/bin
login:输入用户名密码
switchover
主备切换过程中,JMETER业务大概中断4s,符合预期。切换完成后,业务恢复正常:
DSC01节点:
cd /home/dmdba/dmdbms/bin
./DmWatcherServiceDMWATCHER stop
./disql SYSDBA/'"Sysdba@123"'
SQL> checkpoint(100);
SQL> shutdown immediate;
./DmASMSvrServiceASM stop
./DmCSSServiceCSS stop
./DmAPService stop
DSC02节点:
cd /home/dmdba/dmdbms/bin
./DmWatcherServiceDMWATCHER stop
./DmASMSvrServiceASM stop
./DmCSSServiceCSS stop
./DmAPService stop
操作请参考5.1.3章节
操作请参考5.1.4章节
DSC01节点:
cd /home/dmdba/dmdbms/bin
./DmCSSServiceCSS start
./DmASMSvrServiceASM start
./DmServiceDSC start
./DmWatcherServiceDMWATCHER start
./DmAPService start
DSC02节点:
cd /home/dmdba/dmdbms/bin
./dmmonitor /dm/config/dmmonitor.ini
主库DSC03:
cd /home/dmdba/dmdbms/bin
./disql SYSDBA/'"Sysdba@123"'
SQL> select id_code();
备库DSC01:
cd /home/dmdba/dmdbms/bin
./disql SYSDBA/'"Sysdba@123"'
SQL> select id_code();
--可正常返回结果,不再报错
cd /home/dmdba/dmdbms/bin
login:输入用户名密码
switchover
切换过程中业务中断3秒,切换完成后业务恢复正常,符合预期。
生产环境进行滚动升级操作还需要注意以下事项:
1.升级前应用系统需要做好新版本数据库和驱动验证,确保升级后各功能模块使用正常,有条件的情况可先在测试环境进行压测,确认性能可满足需求;
2.升级后针对已开启的系统包进行重新启用;
3.函数索引、空间索引等若有条件,可在升级后进行重建(尤其版本跨度较大时);
4.升级前后确认inject注入情况、JOB运行情况以及单独授予的特殊权限,例如SELECT ON,ADMIN JOB等是否一致;
文章
阅读量
获赞
