DB2 HADR操作手册Word格式文档下载.docx
《DB2 HADR操作手册Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《DB2 HADR操作手册Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。
/usr/es/sbin/cluster/script/db2mon2.sh
2.HADR配置
2.1HADR准备工作
1.安装DB2,更新补丁,版本和主服务器一致
2.创建相同的实例erpdbprd,服务端口:
50000
/usr/opt/db2_08_01/instance/db2icrt-aserver-w64-pdb2c_erpdbprd-uerpfusrerpdbprd
3.更新DBM参数:
db2updatedbmcfgusingTP_MON_NAMECICS
4.设置DB2的环境变量
db2setDB2_PINNED_BP=YES
db2setAUTOSTART=NO
db2setDB2_HASH_JOIN=ON
db2setDB2COUNTRY=86
db2setDB2COMM=TCPIP
db2setDB2CODEPAGE=1386
db2setDB2AUTOSTART=NO
db2setDB2_SKIPINSERTED=ON
db2setDB2_EVALUNCOMMITTED=ON
db2setDB2_HADR_BUF_SIZE=N*LOGBUFSZ(N>
2)
5.恢复DB2数据库,并处于RollforwardPending状态
db2restoredbdberpfrom/dberpbackupto/dberp
db2rollforwarddberpdbtoendoflogs
通过db2getdbcfgfordberp|grep-irollforward查看数据库状态,结果是database(rollforwardpending)
2.2HADR配置工作
1.在erpdb_prd和erpdb_stb上配置HADR服务和侦听端口
用vi编辑/etc/services文件(需要切换到root用户),加入下面两行:
DB2_HADR_155001/tcp
DB2_HADR_255001/tcp
2.在ERPDB_PRD上修改主数据库(ERPDB_PRD-DBERP)的配置参数:
UPDATEDBCFGFORDBERPUSINGLOGINDEXBUILDON
UPDATEDBCFGFORDBERPUSINGINDEXRECRESTART
UPDATEDBCFGFORDBERPUSINGHADR_LOCAL_HOSTerpdb_prd
UPDATEDBCFGFORDBERPUSINGHADR_LOCAL_SVCDB2_HADR_1
UPDATEDBCFGFORDBERPUSINGHADR_REMOTE_HOSTerpdb_stb
UPDATEDBCFGFORDBERPUSINGHADR_REMOTE_SVCDB2_HADR_2
UPDATEDBCFGFORDBERPUSINGHADR_REMOTE_INSTerpdbprd
UPDATEDBCFGFORDBERPUSINGHADR_SYNCMODENEARSYNC
UPDATEDBCFGFORDBERPUSINGHADR_TIMEOUT25
3.在erpdb_stb上修改备用数据库(erpdb_stb-DBERP)的配置参数:
UPDATEDBCFGFORDBERPUSINGHADR_LOCAL_HOSTerpdb_stb
UPDATEDBCFGFORDBERPUSINGHADR_LOCAL_SVCDB2_HADR_2
UPDATEDBCFGFORDBERPUSINGHADR_REMOTE_HOSTerpdb_prd
UPDATEDBCFGFORDBERPUSINGHADR_REMOTE_SVCDB2_HADR_1
2.3HADR启动
1.停止应用
2.启动备机HADR
#su–erpdbadm
$db2start
$db2starthadrondbdberpasstandby
3.检查HADR是否是standby状态
$db2pd–hadr–dbdberp
4.启动主机HADR
$db2starthadrondbdberpasprimary
5.检查HADR是否是peer状态,建议在peer状态后才可以启动HACMP
6.启动备机HACMP
在erpdb_stb机器上,执行#smittyclstart
7.启动主机HACMP
在erpdb_prd机器上,执行#smittyclstart
检查主机HACMP的状态,看serviceIP是否已经工作
2.4HADR停止
在停止DB2HADR之前,需要保证HadrPrimary运行在主机之上,同时HadrStandby运行在备机之上。
如下图:
HadrPrimary运行在主机之上:
HadrStandby运行在备机之上:
然后,在主机和备机之上分别运行smittyclstop的命令:
命令成功完成后,检查双机的状态:
则表示HACMP正常停止,并且HADR仍在工作,然后在HadrStandby和Primary上分别输入:
db2deactivatedbdberp
db2stophadrondbdberp
3.Hadr滚动升级过程
3.1DB2滚动升级(备份服务器erpdb_stb软件升级)
1.升级erpdb_stb上的DB2,安装DB2的FIXPACK
$db2deactivatedbdberp
$db2stophadrondbdberp
$db2forceapplicationsall
$db2terminate
$db2stop
$db2licd-end
$exit
#su–dasusr1
$db2adminstop
#/usr/opt/db2_08_01/bin/db2fmcu–d
#/usr/opt/db2_08_01/bin/db2fm–D–idausr1
#/usr/sbin/slibclean
#cd/mnt/db2ptf
#./installFixPak–a-y
#/usr/opt/db2_08_01/instance/dasupdtdasusr1
#/usr/opt/db2_08_01/instance/db2iupdterpdbadm
$db2STARTHADRONDATABASEDBERPASSTANDBY
检查数据库的HADR能够同步数据,处于Peer的状态。
3.2HADR切换过程(备份服务器接管主服务器)
停止应用
在进行HADR的切换之前必须要满足两个条件:
1.主机和备机的Hadr必须处于Peer的状态,并且PrimaryFile和StandByFile相同
2.主机和备机的HACMP状态处于可工作状态(lssrc–gcluster)
以上两个条件缺一不可。
主机上停止hacmp:
smittyclstop(takeover),通过HACMP的takeover接管,将DB2服务切换到HADR备机,主机HADR服务停止
在备机察看serviceIP是否已经工作,如图,ServiceIP已经切换至备机
察看备机Hadr的状态为Primarydisconnected
3.3主服务器DB2升级
1.升级erpdb_prd的DB2,安装DB2的FIXPACK
#/usr/opt/db2_08_01/bin/db2fm–D–idasur1
$db2ACTIVATEDATABASEDBERP
$db2pd–hadr–dbdberp,HADR处于Peer状态。
3.4主服务器启动HACMP
3.5切换回主服务器进行正常的生产(可选)
以上两个条件缺一不可。
在备份服务器发出:
smittyclstop的命令,如下,选择Takeover的选项。
在主服务器检查serviceIP是否已经正常工作:
在主机上,检查Hadr的状态:
PrimaryPeer
4.故障发生后的恢复方法
在故障发生后,需要进行Hadr的恢复工作,故障大致可以分为以下几类应用:
1.主机系统故障
2.主机应用故障
3.备机系统故障
4.备机应用故障
在以上4类的故障中,Hadr会通过故障切换来保证应用的正常生产。
我们需要做的工作不外乎以下的几个步骤:
1.恢复现有的服务器能够正常工作。
2.从现有的正常生产的系统进行online的备份,然后将备份在恢复后的服务器上进行数据库的restore。
3.启动restore后的数据库至hadrstandby状态,察看主备机的Hadr状态是否peer。
4.检查现有的系统的Hacmp是否已经正常工作,否则,正常启动HACMP。
5.仿照正常的滚动升级的步骤,进行Hadr的切换(如果有需要的话)。
5.附录:
HADR在HACMP中的脚本
Appastart.sh
#!
/bin/ksh
routeadd010.60.2.254
set-x
LOGFILE=/tmp/db2hadr.log
bannerappastart
echo"
---startappastart.shattime`date`---"
>
>
${LOGFILE}
`bannerappastart`"
hostname=`hostname`
---Start`hostname`beginat`date`---"
if[[$hostname="
erpdb_prd"
]]
then
#Checkifinstanceisstartedon10.60.4.1,ifnotthenstartit
echo"
Checkifinstanceisstartedon10.60.4.1,ifnotthenstartit"
instancestatus=`su-erpdbadm-cdb2gcf-s|grep-istate|awk'
{print$4}'
`
if[[$instancestatus="
Available"
then
--------db2isstarted------"
else
su-erpdbadm-cdb2start
---------db2startattime`date`-------"
if[$?
-ne0]
echo"
Startdb2instancefailure"
exit0
fi
#checkifstandbyisalive
checkifstandbyisalive"
ping-c110.60.4.2>
/dev/null
-eq0]
#10.60.4.2isalive
#10.60.4.2isalive"
instancestatus=`rsh10.60.4.2su-erpdbadm-cdb2gcf-s|grep-istate|awk'
if[[$instancestatus="
checkStandby=`rsh10.60.4.2ps-ef|grepdb2hadrs|grepDBERP|wc-l`
if[$checkStandby-eq1]
#Standbyisstarted,thenstartprimaryon10.60.4.1
scenario(3):
Standbyisstarted,thenstartprimaryon10.60.4.1"
su-erpdbadm-c"
db2starthadrondatabasedberpasprimary"
db2activatedatabasedberp"
db2connecttodberp"
db2bind/usr/opt/db2_08_01/bnd/@db2ubind.lstblockingallgrantpublic"
db2bind/usr/opt/db2_08_01/bnd/@db2cli.lstblockingallgrantpublic"
db2bind/usr/opt/db2_08_01/bnd/db2schema.bndblockingallgrantpublic"
db2rbinddberp-ldb2rbind.logall"
db2connectreset"
#StartCICS
#restartcicsregion
echo"
----CICSstart...attime`date`------"
sleep5
/usr/es/sbin/cluster/script/startcics.sh
#If10.60.4.2isprimary,thentakeoverit
#If10.60.4.2isprimary,thentakeoverit"
checkStandby=`rsh10.60.4.2ps-ef|grepdb2hadrp|grepDBERP|wc-l`
scenario(4):
Standbyisnotstarted,thenstartstandbyon10.60.4.1"
db2starthadrondatabasedberpasstandby"
#waitforpeerstatus
while:
do
hadrStatus=`su-erpdbadm-cdb2pd-dbdberp-hadr|grepPeer|awk'
{print$2}'
echo$hadrStatus>
/tmp/db2hadr.log
if[[$hadrStatus="
Peer"
break
sleep5
done
Standbyisstarted,thentakeoveriton10.60.4.1"
db2takeoverhadrondatabasedberp"
su-erpdbadm-c"
#checkhadrstandbyisrunningon10.60.4.1,thentakeoverhadron10.60.4.1
#checkhadrstandbyisrunningon10.60.4.1,thentakeoverhadron10.60.4.1"
checkStandby=`ps-ef|grepdb2hadrs|grepDBERP|wc-l`
#Standbyisstartedon10.60.4.1,thentakeoverhadron10.60.4.1
scenario(5):
Standbyisstartedon10.60.4.1,thentakeoverhadrbyforceon10.60.4.1"
db2takeoverhadrondatabasedberpbyforce"
#restartcicsregion
#Instanceisnotstartedon10.60.4.2,soneedn'
tstartHADRon10.60.4.1ortakeoverhadron