前置条件:
同机房主机:A、同机房备机:B、同城:C、异地:D
滚动升级的顺序为:
1、停止D,先升级D机,随后启动D实例加入到HADR中,并观察状态和日志是否追平;
2、停止C,并升级C机,随后启动C实例加入到HADR中,并观察状态和日志是否追平;
3、停止B,并升级B机,,随后启动B实例加入到HADR中,并观察状态和日志是否追平;
4、进行双机切换,随后将数据库从A切换至B,A与B自然断开(因A版本比B机低);
5、停止A,并升级A机,随后启动A实例加入到HADR中,并观察状态和日志是否追平;
6、进行双机切换,将数据库从B切换回A机即可完成所有升级。
1.备份数据库
备份数据库:
使用NBU发起对数据库全备:NBU server端发起全量备份,全量备份时间和升级时间差<1天
db2pd -util
db2 list utilities show detail
2.备份配置
mkdir -p /yunwei/Release/db/$(date +%Y%m%d)
db2 get dbm cfg > /yunwei/Release/db/$(date +%Y%m%d)/db2dbm.cfg
db2 get db cfg for <DBNAME> > /yunwei/Release/db/$(date +%Y%m%d)/<DBNAME>.cfg
db2set -all > /yunwei/Release/db/$(date +%Y%m%d)/db2set.cfg
db2look -d <DBNAME> -a -e -l -x -ct -o /yunwei/Release/db/$(date +%Y%m%d)/db2look.ddl
db2 connect to <DBNAME>
db2 LIST PACKAGES FOR ALL SHOW DETAIL > /yunwei/Release/db/$(date +%Y%m%d)/pckg.txt
····························B、C、D通用升级步骤··············································
3.查看HADR LOG GAP
db2pd -db <dbname> -hadr
B机角色是standby ,与A状态为peer,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
C机角色是standby ,与A状态为REMOTE_CATCHUP,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
D机角色是standby ,与A状态为REMOTE_CATCHUP,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
4.停止数据库
B、C、D停止数据库:
db2 force applications all
db2 terminate
db2 deactivate db <dbname>
db2stop force
5.禁止故障监视器
禁止故障检查器(Fault Monitor):
/opt/<ibm/IBM>/db2/V11.1/bin/db2fm -i <DB2 instance name> -D
如果无法停止Fault Monitor,需要执行以下命令:
/opt/<ibm/IBM>/db2/V11.1/bin/db2fmcu -d
验证没有db2的进程存在:
ps -ef | grep db2
验证没有db2的进程存在:
ps -ef |grep -i db2
如果仍然无法停止请
kill -9 <kill_id>
建议该步骤反复执行几次看是否会自动重启
6.备份实例目录
备份数据库实例目录:
cp -pr /home/<实例名>/sqllib /home/<实例名>/sqllib_bak
6.升级软件
开始升级产品:
cd /tmp/db2_fix #以实际为准
export LANG=en_US
./installFixPack -b /opt/<ibm/IBM>/db2/V11.1
输入:no
Do you want to choose a different installation directory for the fix pack? [yes/no]
------------------------------------------------------------------------------------
no
观察命令执行结果,并观察/tmp/installFixPack.log.xxxxx"的输出结果。
7.升级实例
升级实例:
/opt/<ibm/IBM>/db2/V11.1/instance/db2iupdt -u <DB2 Fence user name> <DB2 instance user name>
观察命令是否执行成功,并观察/tmp/db2iupdt.log.xxxxx文件输出结果
8.启动数据库
db2start
db2 activate db <dbname>
9.验证HADR状态
db2pd -db <dbname> -hadr
B机角色是standby ,与A状态为peer,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
C机角色是standby ,与A状态为REMOTE_CATCHUP,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
D机角色是standby ,与A状态为REMOTE_CATCHUP,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
10.查看数据库版本
db2level
版本信息应为“DB2 v11.1.4.x”,检查数据库版本是否为期望的升级版本
检查DB2的db2diag.log的日志,查看是否有错误发生。
如出现错误,查看/tmp目录更新版本日志,可重复升级产品和实例
············································B、C、D机通用升级步骤:结束 ·································
11 查看A、B机HADR状态
db2pd -db <dbname> -hadr
B机角色是standby ,与A状态为Peer。
db2pd -db <dbname> -hadr | grep -i HADR_LOG_GAP观察HADR_LOG_GAP为0.
12.双机软件切换HADR
A切换到B
linux:
clusvcadm -r <资源组> -m <B机2号节点>
clustat 检查状态
ip addr 检查服务ip
如果是pcs软件:
pcs status 查看节点名称
pcs cluster standby <A节点名称>
检查服务IP是否漂移至B:pcs status
如果双机软件切换失败:
检查HADR及HA双机状态
su - appmon
db2pd -d <dbname> -hadr
#B机应为primary ,B机与A机的状态为disconnected,因为B机版本比A机高,HADR要求备机可以比主机版本高,但反之不行。
#如果双机脚本中无法将数据库切换至B机,则需要手工切换:
su - <DB2 instance user>
db2 takeover hadr on db <dbname>
13.停止A机
停止数据库:
检查HADR状态:
A机角色是standby ,与B状态为Peer,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
db2 force application all
db2 terminate
db2 deactivate db <dbname>
db2stop force
14.停止A机故障监视器
禁止故障检查器(Fault Monitor):
/opt/<ibm/IBM>/db2/V11.1/bin/db2fm -i <DB2 instance name> -D
如果无法停止Fault Monitor,需要执行以下命令:
/opt/<ibm/IBM>/db2/V11.1/bin/db2fmcu -d
验证没有db2的进程存在:
ps -ef | grep db2
验证没有db2的进程存在:
ps -ef |grep -i db2
如果仍然无法停止请
kill -9 <kill_id>
建议该步骤反复执行几次看是否会自动重启
15.备份A机实例目录
备份数据库实例目录:
cp -pr /home/<实例名>/sqllib /home/<实例名>/sqllib_bak
16.升级A机软件
开始升级产品:
cd /tmp/db2_fix #以实际为准
export LANG=en_US
./installFixPack -b /opt/<ibm/IBM>/db2/V11.1
输入:no
Do you want to choose a different installation directory for the fix pack? [yes/no]
------------------------------------------------------------------------------------
no
观察命令执行结果,并观察/tmp/installFixPack.log.xxxxx"的输出结果。
17.更新A机实例
升级实例:
/opt/<ibm/IBM>/db2/V11.1/instance/db2iupdt -u <DB2 Fence user name> <DB2 instance user name>
观察命令是否执行成功
18.查看版本
验证:
db2level
版本信息应为“DB2 v11.1.4.x”,检查数据库版本是否为期望的升级版本
检查DB2的db2diag.log的日志,查看是否有错误发生。
如出现错误,查看/tmp目录更新版本日志,可重复升级产品和实例
19.查看LOG GAP
db2pd -db <dbname> -hadr
A机角色是standby ,状态为Peer,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
db2pd -db <dbname> -hadr | grep -i HADR_LOG_GAP观察HADR_LOG_GAP为0.
20 查看HADR状态
db2pd -db <dbname> -hadr
B机角色是standby ,与A状态为peer,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
C机角色是standby ,与A状态为REMOTE_CATCHUP,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
D机角色是standby ,与A状态为REMOTE_CATCHUP,要求PRIMARY_LOG_FILE = STANDBY_LOG_FILE
21.将主机由B机切换至A机
B切换到A
linux:
clusvcadm -r <资源组> -m <A机1号节点>
clustat 检查状态
ip addr 检查服务ip
如果是pcs软件:
pcs status查看节点名称
pcs cluster unstandby [A节点名称]
pcs cluster standby [B节点名称]
pcs cluster unstandby [B节点名称]
检查HADR及HA双机状态
su - appmon
db2pd -d <dbname> -hadr
#A机应为Primary ,到B状态为Peer,到C状态为REMOTE_CATCHUP,到D状态为REMOTE_CATCHUP,并要求所有节点的PRIMARY_LOG_FILE = STANDBY_LOG_FILE
#如果双机脚本中无法将数据库切换至B机,则需要手工切换:
su - <DB2 instance user>
db2 takeover hadr on db <dbname>
22.升级A机数据库
#如果以上步骤中HADR状态不对,不能执行以下操作
检查HADR状态
db2pd -d <dbname> -hadr
#A机应为primary ,状态为connected。
db2updv111 -d <dbname>
23.启动监视器
注册Fault Monitor:( root 用户 )
/opt/ibm/db2/V11.1/bin/db2fmcu -u -p /opt/ibm/db2/V11.1/bin/db2fmcd
开启Fault Monitor:( 实例用户 )
su - <DB2 instance name>
/opt/ibm/db2/V11.1/bin/db2fm -i db2inst1 -U
···················以下两步需停止应用,避免数据库产生锁···············
24.绑包
数据库中重新绑定程序包:
1.重新绑定数据库SCHEMA.BND/UBIND.LST/CLI.LST
db2 force application all
db2 terminate
db2 connect to <dbname>
db2 bind /home/<DB2INSTANCE>/sqllib/bnd/db2schema.bnd blocking all grant public SQLERROR continue
db2 bind /home/<DB2INSTANCE>/sqllib/bnd/@db2ubind.lst blocking all grant public action add
db2 bind /home/<DB2INSTANCE>/sqllib/bnd/@db2cli.lst blocking all grant public action add
db2 terminate
2.在数据库中通过运行 db2rbind 命令来重新绑定所有无效程序包:
db2rbind <dbname> -l /tmp/logfile all
db2 connect to <dbname>
db2 "select pkgschema,pkgname from syscat.packages where valid='X'"
#如果以上命令有结果输出,再执行以下步骤:
db2 -x "select 'rebind package ' || trim(pkgschema) || '.' || trim(pkgname) || ';' from syscat.packages where valid='X'" > /yunwei/Release/db/$(date +%Y%m%d)/rebind.sql
db2 -tvf /yunwei/Release/db/$(date +%Y%m%d)/rebind.sql | tee /yunwei/Release/db/$(date +%Y%m%d)/rebind.out
db2 "select pkgschema,pkgname from syscat.packages where valid='X'"
#如果rbind package时报SQL2453。则执行:
db2 "call sysproc.admin_revalidate_db_objects(null,null,null)"
db2 "select pkgschema,pkgname from syscat.packages where valid='X'"
#检查是否还有invalid 或inoperative package。
25.查看表空间
db2 connect to <dbname>
db2 list tablespaces show detail | grep -i state #必须全部是:0x00000000
26.查看表
检查:
db2 connect to <dbname>
db2 "select * from <tablename> fetch first 10 row only"
27.更换应用驱动
将db2最新版本以后为保证应用驱动程序保持在同一版本需要进行替换驱动包,操作主要步骤:
1、备份应用中调用的原驱动包;
2、将/home/<instance>/sqllib/java/ 下的db2java.zip、db2jcc.jar、db2jcc_license_cu.jar、db2jcc4.jar替换应用原使用的驱动包。
3、登录WAS控制台-》资源-》JDBC-》数据源-》选择相应的数据源-》“点击测试连接
默认不替换驱动的原因:
1、多个数据源共用一套驱动程序,一经更新将影响所有应用程序连接数据库
提示:如果程序本身没有使用WAS数据源,请进行应用验证
28.对表做runstats。
版权声明:本文为博主原创文章,未经博主允许不得转载。
DB2