`
wsql
  • 浏览: 11716157 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Windows 7 SP1 64bit 实施单机环境下DB2 V9.5.7 HADR实现实例级故障切换

 
阅读更多

<!-- [if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]-->

HighAvailabilityDisasterRecovery(HADR)是数据库级别的高可用性数据复制机制, HADR 实现是基于 HDR Informix 实现的(是数据库中高可用性灾难恢复相对比较成熟的功能)。本质上讲, HADR 是一种日志传送功能( DB2UDB 现在支持这种功能),但它传送的不是固化的磁盘上的日志,而是日志缓冲区中的日志。这种方法提供了充分的粒度来满足解决方案的高可用性需求。 HADR 复制发生在数据库层。

在生产环境下,HADR 环境需要两台数据库服务器:主数据库服务器( primary )和备用数据库服务器( standby )。当主数据库中发生事务操作时,会同时将日志文件通过 TCP/IP 协议传送到备用数据库服务器,然后备用数据库对接受到的日志文件进行重放( Replay ),从而保持与主数据库的一致性。当主数据库发生故障时,备用数据库服务器可以接管主数据库服务器的事务处理。此时,备用数据库服务器作为新的主数据库服务器进行数据库的读写操作,而客户端应用程序的数据库连接可以通过自动客户端重新路由( AutomaticClientReroute )机制转移到新的主服务器。当原来的主数据库服务器被修复后,又可以作为新的备用数据库服务器加入 HADR 。通过这种机制, DB2UDB 实现了数据库的灾难恢复和高可用性,最大限度的避免了数据丢失。

实施过程及命令行步骤:

一、清理 DB2环境,避免傻逼问题出现

C:/IBM/SQLLIB/BIN>db2ilist

DB2

BAK

C:/IBM/SQLLIB/BIN>db2idropbak

DB20000IDB2IDROP命令成功完成。

C:/IBM/SQLLIB/BIN>db2ilist

DB2

C:/IBM/SQLLIB/BIN>cd..

C:/IBM/SQLLIB>dir

驱动器C 中的卷没有标签。

卷的序列号是C470-0EBA

C:/IBM/SQLLIB的目录

2011/02/2220:59<DIR>.

2011/02/2220:59<DIR>..

2011/02/2220:59<DIR>adsm

2011/06/1617:19<DIR>BIN

2011/02/2220:59<DIR>bnd

2011/02/2309:27<DIR>cfg

2011/02/2220:11<DIR>clidriver

2011/02/2220:11<DIR>conv

2011/03/3114:05<DIR>dasfcn

2007/10/0223:11241db2cli.opt

2011/02/2220:10<DIR>doc

2011/02/2309:27<DIR>FUNCTION

2011/02/2220:11<DIR>help

2011/02/2220:59<DIR>include

2011/02/2220:12<DIR>infopop

2010/11/3015:28787,408INFOPOPS_JHELP_CN.exe

2010/11/3015:291,700,448INFOPOPS_WHELP_CN.exe

2011/02/2220:59<DIR>java

2011/02/2220:59<DIR>lib

2011/02/2702:25<DIR>license

2011/02/2220:11<DIR>map

2011/02/2220:59<DIR>MISC

2011/02/2220:11<DIR>msg

2011/02/2220:59<DIR>Readme

2011/02/2220:59<DIR>samples

2011/02/2220:10<DIR>security

2011/02/2702:25<DIR>tivready

2011/03/1914:21<DIR>TOOLS

3个文件 2,488,097 字节

25个目录 75,457,306,624 可用字节

C:/IBM/SQLLIB>db2icrtdb2inst1

DB20000IDB2ICRT命令成功完成。

C:/IBM/SQLLIB>db2icrtdb2inst2

DB20000IDB2ICRT命令成功完成。

C:/IBM/SQLLIB>cdbin

C:/IBM/SQLLIB/BIN>hadr.cmd

"语法 :handson.cmd<SL510>"

"运行错误,请检查脚本 "

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst1

C:/IBM/SQLLIB/BIN>db2start

ADM12026WDB2服务器检测到尚未注册产品 "DB2EnterpriseServerEdition" 的有效许

可证。

SQL1063NDB2START处理成功。

C:/IBM/SQLLIB/BIN>db2dropdbsample

SQL1031N在指示的文件系统中找不到数据库目录。 SQLSTATE=58031

C:/IBM/SQLLIB/BIN>db2stop

SQL1064NDB2STOP处理成功。

C:/IBM/SQLLIB/BIN>db2idropdb2inst1

DB20000IDB2IDROP命令成功完成。

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst2

C:/IBM/SQLLIB/BIN>db2start

ADM12026WDB2服务器检测到尚未注册产品 "DB2EnterpriseServerEdition" 的有效许

可证。

SQL1063NDB2START处理成功。

C:/IBM/SQLLIB/BIN>db2dropdbsample

SQL1031N在指示的文件系统中找不到数据库目录。 SQLSTATE=58031

C:/IBM/SQLLIB/BIN>db2stop

SQL1064NDB2STOP处理成功。

C:/IBM/SQLLIB/BIN>db2idropdb2inst2

DB20000IDB2IDROP命令成功完成。

二、创建 2个实例, db2inst1 作为主, db2inst2 作为副。库以 sample 库为例

C:/IBM/SQLLIB/BIN>db2icrtdb2inst1

DB20000IDB2ICRT命令成功完成。

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst1

C:/IBM/SQLLIB/BIN>db2start

ADM12026WDB2服务器检测到尚未注册产品 "DB2EnterpriseServerEdition" 的有效许

可证。

SQL1063NDB2START处理成功。

C:/IBM/SQLLIB/BIN>db2updatedbmcfgusingsvcename33333

DB20000IUPDATEDATABASEMANAGERCONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2setdb2comm=tcpip

C:/IBM/SQLLIB/BIN>db2terminate

DB20000ITERMINATE命令成功完成。

C:/IBM/SQLLIB/BIN>db2stop

SQL1064NDB2STOP处理成功。

C:/IBM/SQLLIB/BIN>db2start

ADM12026WDB2服务器检测到尚未注册产品 "DB2EnterpriseServerEdition" 的有效许

可证。

SQL1063NDB2START处理成功。

C:/IBM/SQLLIB/BIN>db2sampl.exe

Creatingdatabase"SAMPLE"...

Connectingtodatabase"SAMPLE"...

Creatingtablesanddatainschema"JAMIN"...

CreatingtableswithXMLcolumnsandXMLdatainschema"JAMIN"...

'db2sampl'processingcomplete.

三、 将主库设置为归档模式,这是必须的。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingLOGRETAINRECOVERY

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2backupdbsampletoc:/temp

备份成功。此备份映像的时间戳记是:20110616173329

C:/IBM/SQLLIB/BIN>db2icrtdb2inst2

DB20000IDB2ICRT命令成功完成。

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst2

C:/IBM/SQLLIB/BIN>db2start

ADM12026WDB2服务器检测到尚未注册产品 "DB2EnterpriseServerEdition" 的有效许

可证。

SQL1063NDB2START处理成功。

C:/IBM/SQLLIB/BIN>db2updatedbmcfgusingsvcename44444

DB20000IUPDATEDATABASEMANAGERCONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2setdb2comm=tcpip

C:/IBM/SQLLIB/BIN>db2terminate

DB20000ITERMINATE命令成功完成。

C:/IBM/SQLLIB/BIN>db2stop

SQL1064NDB2STOP处理成功。

C:/IBM/SQLLIB/BIN>db2start

ADM12026WDB2服务器检测到尚未注册产品 "DB2EnterpriseServerEdition" 的有效许

可证。

SQL1063NDB2START处理成功。

四、 在副库上恢复之前主库的备份,注意时间戳的匹配。

C:/IBM/SQLLIB/BIN>db2restoredbsamplefromc:/temp

SQL2522N多个备份文件与为备份的数据库映像提供的时间戳记值相匹配。

C:/IBM/SQLLIB/BIN>db2restoredatabasesamplefrom"c:/temp"takenat2011061617

3329replacehistoryfilewithoutprompting

DB20000IRESTOREDATABASE命令成功完成。

五、 配置 HADR环境参数

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_LOCAL_HOST%1

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_LOCAL_SVC44455

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_REMOTE_HOST%1

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_REMOTE_SVC33344

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_REMOTE_INSTdb2inst1

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_SYNCMODENEARSYNC

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingLOGINDEXBUILDon

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>SETdb2instance=db2inst1

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_LOCAL_HOST%1

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_LOCAL_SVC33344

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_REMOTE_HOST%1

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_REMOTE_SVC44455

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_REMOTE_INSTdb2inst2

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_SYNCMODENEARSYNC

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingLOGINDEXBUILDon

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

六、启动 HADR

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst2

C:/IBM/SQLLIB/BIN>db2starthadrondbsampleasstandby

SQL1768N未能启动 HADR 。原因码 ="4"

七、 错误诊断

db2=>?SQL1768N

SQL1768N未能启动 HADR 。原因码 ="< 原因码 >"

说明:

与原因码对应的解释是:

1不可恢复数据库,这是因为正在使用循环日志记录。

2数据库启用了无限活动日志记录。

3数据库启用了 DATALINKS

4配置参数 HADR_LOCAL_HOST 无效。

5HADR_LOCAL_SVC配置参数是无效服务名称。

6HADR_REMOTE_SVC配置参数是无效服务名称。

7 HADR 超时时间间隔内,主数据库未能与它的备用数据库建立连接。

8一个或多个 HADR 数据库配置参数没有任何值。

9数据库配置为使用原始日志。但是, HADR 不支持对数据库日志文件使

用原始I/O (直接磁盘访问)。

10命令由于 STOPHADR 命令、取消激活数据库或内部错误而被 HADR

闭所中断。

11不能将 HADR_LOCAL_HOST HADR_REMOTE_HOST 配置参数解析为同一

IP格式。

12配置参数 HADR_REMOTE_HOST 无效。

98未安装有效的 HADR 许可证。命令未成功完成。

99 HADR 启动期间发生了内部错误。

用户响应:

与原因码对应的用户响应是:

1数据库必须是可恢复的数据库。激活日志归档或者打开 LOGRETAIN

然后重新发出该命令。

2禁用无限活动日志记录并重新发出该命令。

3将数据库管理器配置参数 DATALINKS 设置为 NO 并重新发出该命令。

4确保可以将配置参数 HADR_LOCAL_HOST 映射至与本地主机相关联的一个

IPv4 IPv6 地址。

5确保 HADR_LOCAL_SVC 配置参数是有效的服务名称。对于 Unix 平台,

编辑/etc/services 文件。对于 Windows ,编辑 %SystemRoot%/

system32/drivers/etc/services。另外,可以为此参数指定文字端口

号。

6确保 HADR_REMOTE_SVC 配置参数是有效服务名称。对于 Unix 平台,

编辑/etc/services 文件。对于 Windows ,编辑 %SystemRoot%/

system32/drivers/etc/services。另外,可以为此参数指定文字端口

号。

7

检查备用数据库上的远程主机和远程服务参数。确保备用数据库是联机

的,并且网络在起作用。如果网络速度太慢,那么还要考虑增大配置参

HADR_TIMEOUT 的值,或者使用 BYFORCE 选项来启动主数据库。

如果用于主数据库的HADR_TIMEOUT 配置参数与用于备用数据库的此配

置参数的值不相同,那么连接也将失败。有关更多信息,请参阅

db2diag.log以获取有关主数据库和备用数据库的不兼容配置的消息。

8确保一个或多个 HADR 数据库配置参数具有值。

9将数据库重新配置为对日志文件只使用文件系统存储器,而不是使用原

I/O (直接磁盘访问)设备。请参阅 DB2 信息中心中有关 logpath

newlogpath 数据库配置参数的讨论。

10找出 HADR 关闭的原因,如果有必要,请重新发出 STARTHADR 命令。

11确保 HADR_LOCAL_HOST HADR_REMOTE_HOST 配置参数采用同一种 IP

格式(IPv4 IPv6 )或者可以解析为同一种格式。

12确保可以将配置参数 HADR_REMOTE_HOST 映射至 IPv4 IPv6 地址。

98获取并安装有效的 HADR 许可证,然后重新提交该命令。

99如果问题仍然存在,请与 IBM 支持机构联系。

db2=>

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_LOCAL_HOSTSL510

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_REMOTE_HOSTSL510

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2stop

SQL0104N "STOP" 后面找到异常标记

"语句结束 " 。预期标记可能包括: "DATABASE" SQLSTATE=42601

C:/IBM/SQLLIB/BIN>db2stop

SQL1064NDB2STOP处理成功。

C:/IBM/SQLLIB/BIN>db2start

ADM12026WDB2服务器检测到尚未注册产品 "DB2EnterpriseServerEdition" 的有效许

可证。

SQL1063NDB2START处理成功。

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst1

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_LOCAL_HOSTSL510

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>>db2updatedbcfgforsampleusingHADR_REMOTE_HOSTSL510

'update'不是内部或外部命令,也不是可运行的程序

或批处理文件。

C:/IBM/SQLLIB/BIN>db2updatedbcfgforsampleusingHADR_REMOTE_HOSTSL510

DB20000IUPDATEDATABASECONFIGURATION命令成功完成。

C:/IBM/SQLLIB/BIN>db2stop

SQL1064NDB2STOP处理成功。

C:/IBM/SQLLIB/BIN>db2start

ADM12026WDB2服务器检测到尚未注册产品 "DB2EnterpriseServerEdition" 的有效许

可证。

SQL1063NDB2START处理成功。

八、重新启动HADR

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst2

C:/IBM/SQLLIB/BIN>db2starthadrondbsampleasstandby

DB20000ISTARTHADRONDATABASE命令成功完成。

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst1

C:/IBM/SQLLIB/BIN>db2starthadrondbsampleasprimary

DB20000ISTARTHADRONDATABASE命令成功完成。

C:/IBM/SQLLIB/BIN>

九、 HADR测试

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst1

C:/IBM/SQLLIB/BIN>db2pd-dsample-hadr

DatabasePartition0--DatabaseSAMPLE--Active--Up0days00:13:55--Date

2011-06-1617:57:43

HADRInformation:

RoleStateSyncModeHeartBeatsMissedLogGapRunAvg(bytes)

PrimaryPeerNearsync00

ConnectStatusConnectTimeTimeout

ConnectedThuJun1617:43:492011(1308217429)120

LocalHostLocalService

SL51033344

RemoteHostRemoteServiceRemoteInstance

SL51044455db2inst2

PrimaryFilePrimaryPgPrimaryLSN

S0000000.LOG00x0000000001388000

StandByFileStandByPgStandByLSN

S0000000.LOG00x0000000001388000

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst2

C:/IBM/SQLLIB/BIN>db2pd-dsample-hadr

DatabasePartition0--DatabaseSAMPLE--Active--Up0days00:16:07--Date

2011-06-1617:59:18

HADRInformation:

RoleStateSyncModeHeartBeatsMissedLogGapRunAvg(bytes)

StandbyPeerNearsync00

ConnectStatusConnectTimeTimeout

ConnectedThuJun1617:43:492011(1308217429)120

LocalHostLocalService

SL51044455

RemoteHostRemoteServiceRemoteInstance

SL51033344db2inst1

PrimaryFilePrimaryPgPrimaryLSN

S0000000.LOG00x0000000001388000

StandByFileStandByPgStandByLSNStandByRcvBufUsed

S0000000.LOG00x00000000013880000%

C:/IBM/SQLLIB/BIN>

C:/IBM/SQLLIB/BIN>setdb2instance=db2inst1

C:/IBM/SQLLIB/BIN>db2connecttosampleuserdb2adminusingdb2admin

数据库连接信息

数据库服务器=DB2/NT649.5.7

SQL授权标识 =DB2ADMIN

本地数据库别名=SAMPLE

C:/IBM/SQLLIB/BIN>db2createtabletest(c1integernotnull,c2varchar(2),prima

rykey(c1))

DB20000ISQL命令成功完成。

C:/IBM/SQLLIB/BIN>db2insertintotest(c1,c2)values(11,'aa')

DB20000ISQL命令成功完成。

C:/IBM/SQLLIB/BIN>db2insertintotest(c1,c2)values(22,'bb')

DB20000ISQL命令成功完成。

C:/IBM/SQLLIB/BIN>db2commit

DB20000ISQL命令成功完成。

C:/IBM/SQLLIB/BIN>

在实例-db2inst2 下的 sample 数据库上执行 takeover 命令,接管实例 -db2inst1 下的 sample 数据库(手工执行备用数据库接管主数据库):

setdb2instance=db2inst2
db2takeoverhadrondatabasesampleuserdb2adminusing db2admin

十、 DB2HADR管理说明

1. 启动和停止DB2HADR 使用STARTHADR 命令启动主数据库和备用数据库的 HADR 。启动主数据库使用 ASPRIMARY 子句,启动备用数据库使用 ASSTANDBY 子句。如果想以其他用户启动 HADR ,可以通过 USERuser-nameUSINGpassword 子句指定用户名和密码,在启动主数据库的 HADR 时,如果在数据库 HADR_TIMEOUT 所指定的时间内未能建立与备用数据库 HADR 的连接,启动将失败。这时候,你可以等排除故障并成功启动备用数据库 HADR 后再启动主数据库 HADR ,也可以通过指定 BYFORCE 子句强行启动主数据库。:

2. 启动备用数据库:starthadrondatabasesample[usingdb2adminusingdb2admin]asstandby

3. 启动主数据库:starthadrondatabasesample[usingdb2adminusingdb2admin]asprimary[byforce] 使用STOPHADR 停止主数据库和备用数据库的 HADR ,如果在活动的主数据库上发出此命令,所有的数据库连接都被断开,数据库恢复为标准数据库,并保持联机状态;如果在活动的备用数据库上发出此命令,将停止失败。你必须先使 DEACTIVATEDATABASE命令取消激活,然后再停止 HADR

4. 停止备用数据库:deactivatedatabasesample stophadrondatabasesample[usingdb2adminusingdb2admin]

5. 停止主数据库:stophardondatabasesample[usingdb2adminusingdb2admin]

6. 查看HARD 的配置及运行状态 当备用数据库的HADR 启动时,它首先进入本地同步更新状态。并根据本地日志路径配置参数及日志归档方法的设置检索本地系统中的日志文件并重放。当本地日志文件重放完毕,备用数据库进入远程同步暂挂状态。当与主数据库建立连接之后,备用数据库进入远程同步更新状态。即主数据库将自己的日志文件通过 TCPIP 协议发送给备用数据库,备用数据库接收到日志文件并重放,直到所有日志文件都重放完毕,备用数据库和主数据库进入对等状态。

7. 查看DB2HADR 状态: db2pd-dsample-hadr

8. 主数据库和备用数据库的接管/ 故障转移 当主数据库发生故障时,备用数据库可以接管主数据库的服务,成为新的主数据库(称为故障转移)。当原主数据库修复后,又可以作为备用数据库加入HADR 对。即使主数据库服务器没有故障,我们通过接管命令( TAKEOVER )切换主数据库和备用数据库的角色。

9. 接管命令只能用在备用数据库上。HADR 提供两种接管方式:

a) 紧急接管:takeoverhadrondatabasesamplebyforce

b) 普通接管:takeoverhadrondatabasesample

10. 主数据库和备用数据库的同步方式 在上面的配置实例中我们将主数据库和备用数据库的HADR_SYNCMODE 参数值设置为 NEARSYNC ,当主数据库和备用数据库处于对等状态时, HADR 采用 NEARSYNC (接近同步)同步方式管理日志写入。 DB2 提供了三种日志同步方式:

a) SYNC(同步):采用 SYNC 方式时,仅当主数据库日志写入成功,并收到备用数据库的应答,确保备用数据库的日志也成功写入的情况下,才认为日志写入成功。这种方式下的事务响应时间最长,但最大限度的确保不发生事务丢失;

b) NEARSYNC(接近同步):采用 NEARSYNC 方式时,当主数据库日志写入成功,并收到备用数据库的应答,确定备用数据库已经接收到日志时,即认为日志写入成功。也就是说,备用数据库接收到的日志并不一定能成功写入持久存储设备上的日志文件。这种方式下的事务响应时间比 SYNC 方式短,且仅当两台服务器同时发生故障时,才会发生事务丢失;

c) ASYNC(异步):采用 ASYNC 方式时,当主数据库日志写入成功,并将日志发送出去之后,即认为日志写入成功。此方式并不保证备用数据库能收到日志,这要依赖于 TCP/IP 网络情况。这种方式下的事务响应时间最短,但产生事务丢失的可能性也最大。

11. 自动客户端重新路由(AutomaticClientReroute 要配置自动客户端重新路由,使用UPDATEALTERNATESERVER 命令设置备用数据库信息(使用方法参考上面的配置实例),这些信息将被存放在数据库的系统目录中。请注意:必须使用此命令来设置备用数据库,而不是 HADR_REMOTE_HOST HADR_REMOTE_SVC 数据库配置参数,自动客户端重新路由不使用这两个参数。当客户端与数据库建立连接时,备用数据库的配置信息(主机 /IP 及端口号)也同时被发送给 DB2 客户端。当客户端与主数据库的连接被中断时,客户端就使用这些信息连接到备用数据库,从而最小限度的降低了数据库故障所造成的影响。需要强调的是,这个过程由 DB2 客户端自动完成,不需要用户用程序干涉。通过 LISTDBDIRECOTRY 命令可以查看系统数据库目录中自动客户端重新路由的配置。

12. 索引日志记录 索引的创建、重建、重组也是HADR 环境中需要考虑的一个方面, DB2 通过数据库配置参数 LOGINDEXBUILD CREATETABLE ALTERTABLE 语句中的 LOGINDEXBUILD 选项来控制是否对索引的相关操作进行详细的日志记录。我们在上面的 HADR 配置实例中将 LOGINDEXBUILD 数据库参数配置为 ON ,意为让 DB2 记录索引创建、重建、重组的完整日志。这显然会降低主数据库的运行效率并占用更多的日志空间。但因为备用数据库可以通过重放日志来重新构建索引,所以当主数据库发生故障,备用数据库的索引仍然可用。用户可以通过 CREATETABLE ALTERTABLE 语句的 LOGINDEXBUILD 选项来对单个表设定索引日志记录级别。 LOGINDEXBUILD 选项有三个可选参数:

a) NULL:这是缺省值,当使用此参数时,表的索引日志记录级别由数据库配置参数 LOGINDEXBUILD 的值决定。

b) ON:使用此参数,数据库配置参数 LOGINDEXBUILD 的值将被忽略, DB2 将记录这个表上所有索引维护的详细日志。

c) OFF:使用此参数时,数据库配置参数 LOGINDEXBUILD 的值将被忽略, DB2 将不记录这个表上索引维护的日志。如果表选项 LOGINDEXBUILD 设置为 OFF ,或者 LOGINDEXBUILD 设置为 NULL 但数据库配置参数 LOGINDEXBUILD 设置为 OFF DB2 将不记录这些表的索引维护日志,备用数据库也就无法重放索引维护操作,致使这些索引在备用数据库上变为无效状态。当主数据库发生故障,备用数据库切换为新主数据库后,这些无效的索引必须重建才能被使用。 DB2 通过数据库配置参数 INDEXREC 来指定在什么时候检查并重建无效索引。 INDEXREC 参数有三个可选值:

i. RESTART DB2 将在显式或隐式重启数据库( RESTARTDATABASE )的时候检查并重新构建无效索引。

ii. ACCESS DB2 将在无效索引第一次被访问的时候才会重新构建它。

iii. SYSTEM:使用数据库管理器配置参数( DatabaseManagerConfiguration INDEXREC 的值。

在上面的配置实例中,我们将INDEXREC 的值设为 RESTART ,备用数据库将在接管为新的主数据库时检查并重新构建所有无效索引。

十一、 DB2HADR的限制

a) 只有DB2UDBEnterpriseServerEdition ESE )支持 HADR ,但 HADR 不能支持分区数据库( DatabasePartitioningFeature DPF )。

b) 主数据库和备用数据库必须运行在相同的操作系统版本上,并且DB2UDB 的版本也必须一致,除非短暂的软件升级过程。

c) 主数据库和备用数据库的位大小必须一致(32 位或 64 位)。

d) 不能在备用数据库上进行备份操作

e) 备用数据库是不能访问的,客户端程序无法连接备用数据库。

f) 日至归档操作只能在主数据库上进行。带有COPYNO 选项的 LOAD 命令是不支持的

g) 主数据库和备用数据库必须是一对一的。

h) HADR不能使用循环日志

i) HADR不复制数据库配置参数、共享库、 DLL UDF 或存储过程

注意以上是 9.5版本的 DB2 限制,从 DB29.7.1 开始支持了 HADR 备机可读。

j) 除非已启用 在备用数据库上读取 ,否则客户机无法与备用数据库连接。 在备用数据库上读取 可让客户机连接至活动备用数据库及发出只读查询。

k) 如果已启用 在备用数据库上读取 ,那么不允许在备用数据库上执行写入日志记录的操作;只有读取客户机可以连接至活动备用数据库。

l) 如果已启用 在备用数据库上读取 ,那么不允许在备用数据库上执行修改数据库内容的写入操作。将不支持尝试修改数据库对象的任何异步线程(例如 JustInTimeStatistics JITS )和自动重建索引)和实用程序。 JITS 和自动重建索引不应在备用数据库上运行。

m) 只能由当前主数据库执行日志归档。

n) 只能对当前主数据库运行自调整内存管理器(STMM )。在主数据库启动或备用数据库通过接管而转换为主数据库后,直到第一个客户机连接生效, STMMEDU 才可能启动。

o) 在备用数据库上不支持备份操作。

p) 未进行日志记录的操作(例如对数据库配置参数和恢复历史记录文件所作的更改)不会被复制到备用数据库。

q) 不支持指定了COPYNO 选项的装入操作。

r) HADR不支持对数据库日志文件使用原始 I/O (直接磁盘访问)。如果 HADR 是通过 STARTHADR 命令启动的,或者在配置了 HADR 的情况下激活(重新启动)数据库,并且检测到原始日志,那么相关联的命令将失败。

s) 对于一阶段落实,HADR 数据库可以充当联合服务器(事务管理器)或数据源(资源管理器)。对于两阶段落实, HADR 数据库只能充当数据源。

注意:即使是 V9.7.1版本已经支持并开启了备库可读特性,依然存在以下限制:

a. 不允许在备用数据库上执行写入操作。在此上下文中,写入操作是修改目录、表和索引等永久数据库对象的操作。在备用数据库上执行写入操作会返回错误(SQL1773N 原因码 5 )。特别是,不能执行会导致在备用数据库上生成日志记录的任何操作。

b. 在重放DDL 志记录或维护操作期间( 仅重放时间 ),用户连接无法访问备用数据库。有关更多信息,请参阅活动备用数据库上的仅重放时间。

c. 当备用数据库处于本地同步复制状态时,用户连接无法访问该数据库。尝试连接此状态的客户机将收到错误(SQL1776N 原因码 1 )。

d. 在备用数据库上只支持未落实的读(UR )隔离级别。请求更高隔离级别的应用程序、语句或子语句将收到错误( SQL1773N 原因码 1 )。有关更多信息,请参阅活动备用数据库上的隔离级别。

e. 不会将实例级别审计配置复制到备用数据库。必须使 db2audit 工具确保实例级别审计设置在主数据库和备用数据库上是相同的。

f. 在备用数据库上不支持已声明临时表(DGTT) 。在备用数据库上尝试创建或访问它们将收到错误( SQL1773N 原因码 4 )。

g. 创建临时表(CGTT) 只能创建在主数据库上,且它们的定义会被复制到备用数据库。但是,在备用数据库上不支持访问 CGTT ,尝试创建或访问它们将收到错误( SQL1773N 原因码 4 )。

h. 在主数据库上创建 创建临时表 ”(CGTT) 将触发备用数据库上的仅重放窗口。

i. 在备用数据库上不能访问最初未进行日志记录(NLI )表。在备用数据库上尝试读取 NLI 表的应用程序将收到错误( SQL1477N )。

j. 备用数据库上的查询只能使用SMS 系统临时表空间。在备用数据库上执行使用 DMS 系统临时表空间的查询可能会导致错误( SQL1773N 原因码 5 )。

k. 不能查询下列数据:XML 、大对象 (LOB) 、长字段( LF )、基于这些数据类型的其中一种的单值类型和结构化类型列。尝试查询这些数据类型将收到错误( SQL1773N 原因码 3 )。

l. 在备用数据库上不支持说明工具(db2exfmt db2expln VisualExplain )和 db2batch 工具( SQL1773N 原因码 5 )。如果要分析只读工作负载的性能,那么首先应在主数据库上运行这些工具,在主数据库上对工作负载进行必要的优化,然后将优化后的工作负载移至备用数据库。

m. 在备用数据库上不支持程序包的显式绑定及重新绑定和隐式重新绑定。尝试运行引用失效对象的静态程序包及这些程序包的隐式重新绑定将导致错误(分别为SQL1773N 原因码 5 6 )。应该转为在主数据库上绑定程序包,并在将更改复制到备用数据库后,在备用数据库上运行程序包。

n. 在备用数据库上不支持自调整内存管理器(STMM )。如果要调整备用数据库(以适合运行只读工作负载或以在接管后执行良好),那么必须手动调整。

o. 主数据库上的工作负载管理器(WLM DDL 语句将在备用数据库上重放,但它们在备用数据库上不会生效;但是,存在于数据库备份(用于建立备用数据库)中的任何定义在启用了读取的备用数据库上将是活动的。

p. 在备用数据库上不支持创建和改变序列。同样,不能使用NEXTVALUE 表达式来生成序列中的下一个值。

q. 在备用数据库上不支持无效对象的运行时重新验证。

r. 不能将备用数据库配置为FederationServer

s. 在备用数据库上不支持备份和归档操作。

t. 在备用数据库上不支持停顿操作。

十二、 自动化脚本

@echooffrem-----rem单机环境 DB2HADR 生成脚本

rem您可以将这个脚本保存到一个脚本文件 hadr.cmd 中,然后按一下语法执行:

remhadr.cmd<hostname>

rem-------if"%1"==""gotousage

rem清除原有环境

rem----echo清除环境

setdb2instance=db2inst1

db2start

db2dropdbsample

db2stop

db2idropdb2inst1

setdb2instance=db2inst2

db2start

db2dropdbsample

db2stop

db2idropdb2inst2

rem------rem创建 db2inst1 实例

rem-----echo创建 db2inst1 实例 ....

db2icrtdb2inst1

iferrorlevel1gotoendecho成功创建 db2inst1 实例

setdb2instance=db2inst1

db2start

db2updatedbmcfgusingsvcename33333db2setdb2comm=tcpip

db2terminate

db2stop

db2start

echo在实例 db2inst1 下创建 sample 数据库

db2sampl

iferrorlevel1gotoenddb2updatedbcfgforsampleusingLOGRETAINRECOVERY

echo备份 sample 数据库到当前路径

db2backupdbsampleto.

iferrorlevel1gotoendrem--------rem创建 db2inst2 实例

rem--------echo创建 db2inst2 实例 ....

db2icrtdb2inst2

iferrorlevel1gotoendecho成功创建 db2inst2 实例

setdb2instance=db2inst2

db2start

db2updatedbmcfgusingsvcename44444db2setdb2comm=tcpip

db2terminate

db2stop

echo在实例 db2inst2 下恢复 sample 数据库

db2start

db2restoredbsamplefrom.

iferrorlevel1gotoendrem---------rem配置 HADR 参数

rem--------echo配置实例 db2inst2 下的 sample 数据库的 HADR 参数

db2updatedbcfgforsampleusingHADR_LOCAL_HOST %1

db2updatedbcfgforsampleusingHADR_LOCAL_SVC 44455

db2updatedbcfgforsampleusingHADR_REMOTE_HOST %1

db2updatedbcfgforsampleusingHADR_REMOTE_SVC 33344

db2updatedbcfgforsampleusingHADR_REMOTE_INSTdb2inst1

db2updatedbcfgforsampleusingHADR_SYNCMODENEARSYNC

db2updatedbcfgforsampleusingLOGINDEXBUILD on

echo配置实例 db2inst1 下的 sample 数据库的 HADR 参数

SETdb2instance=db2inst1

db2updatedbcfgforsampleusingHADR_LOCAL_HOST %1

db2updatedbcfgforsampleusingHADR_LOCAL_SVC 33344

db2updatedbcfgforsampleusingHADR_REMOTE_HOST %1

db2updatedbcfgforsampleusingHADR_REMOTE_SVC 44455

db2updatedbcfgforsampleusingHADR_REMOTE_INSTdb2inst2

db2updatedbcfgforsampleusingHADR_SYNCMODENEARSYNC

db2updatedbcfgforsampleusingLOGINDEXBUILD on

rem-------rem启动 HADR

rem-----echo启动实例 db2inst2 下的 sample 数据库作为备用数据库 standby

setdb2instance=db2inst2

db2starthadrondbsample asstandby

iferrorlevel1gotoend

echo启动实例 db2inst1 下的 sample 数据库作为主数据库 primary

setdb2instance=db2inst1

db2starthadrondbsample asprimary

iferrorlevel1gotoend

echo祝贺您成功配置 HADR.

exit:usage

echo"语法 :handson.cmd<hostname>"

:endEcho"运行错误,请检查脚本 "

分享到:
评论

相关推荐

    phpcms框架后台管理系统phpcms_v9.5.7_UTF8

    Phpcms由内容模型、会员、问吧、专题、财务、订单、广告、邮件订阅、 短消息、自定义表单、全站搜索等20多个功能模块组成,内置新闻、图片、下载、信息、产品5大内容模型。Phpcms 采用模块化开发,支持自定义内容...

    DbVisualizer 9.5.7

    DbVisualizer 9.5.7,目前最新版本 64位系统使用

    DbVisualizer 9.5.7 for linux with licence and puk

    DbVisualizer 9.5.7 for linux with licence and puk 破解方法 1、tar xf dbvis.tar 2、dnf install dbvis_linux_9_5_7.rpm 3、在/opt/DbVisualizer/lib目录, 3.1、mkdir test 3.2、cp dbvis.jar test 3.3、mv ...

    PHPCMS网站系统源码 v9.5.7

    版本v9.5.7 功能变更及bug修正说明: 修复一些浏览器附件无法上传的问题 修复上传的漏洞 修复板块内容搜素box类型重复和无法使用的bug 修复漂浮广告无法关闭的bug api/get_menu.php漏洞修复 升级方法: 一...

    dbvisualizer 9.5.7破解文件

    dbvisualizer 9.5.7版本的破解补丁,内附说明,亲测可用

    虚拟股市 StockIns 9.5.7 正式版(u20111129) for Discuz! GBK

    虚拟股市 StockIns 9.5.7 正式版(u20111129) for Discuz! GBK

    一秒语音包9.5.7.apk

    一秒语音包9.5.7.apk

    手机电子书制作器 友益文书软件-手机电子书制作利器 v9.5.7

    友益文书软件是一款集资料管理、电子图书制作、翻页电子书制作、多媒体课件管理等于一体的多功能软件。可用于管理htm网页、mht单一网页、word文档、excel文档、幻灯片、pdf、chm、

    momo_9.5.7_c3242.apk.1

    momo_9.5.7_c3242.apk.1

    SQLPrompt9.5.7z

    亲测,SSMS 18.4 可用。压缩包内有安装说明。撸sql的利器,现在撸sql感觉已经离不开这个工具了。

    jQueryFileUplod9.5.7(解决了浏览器兼容性问题)

    本人解决了插件中存在的部分兼容性问题,jQueryFileUplod9.5.7(解决了浏览器兼容性问题)

    智睿网络投票评选管理系统 v10.4.7

    网络版的投票评选在活动中的方便性和重要性,目前智睿投票评选系统专注定位于投票评选行业的量身开发,打造行业的领先服务评选品牌,系统整合单选/多选一体化功能,并适合图文

    龙芯3A处理器用户手册

    图目录 V 表目录 I 第一部分 3 1 概述 1 1.1 龙芯系列处理器介绍 1 1.2 龙芯3A简介 3 2 系统配置与控制 5 2.1 芯片工作模式 5 2.2 控制引脚说明 5 2.3 Cache一致性 6 2.4 系统节点级的物理地址空间分布 7 2.5 地址...

    postgresql-9.5.13-1-linux-x64-binaries.tar.gz

    postgresql-9.5.13-1-linux-x64-binaries.tar.gz

    Active_Query_Builder_VCL_1.7.9.5.7.zip

    Active Query Builder VCL Crack,有功能强大的SQL分析器  Active Query Builder VCL是一个直观的查询构建组件,Active Query Builder VCL组件使您可以从直观的界面构建SQL或Unions查询和子查询。...

    Visual C++实践与提高-COM和COM+篇『PDF』

    9.5.7 绘制控件 9.5.8 响应环境属性的变化 9.5.9 增加事件 9.5.10 为库存属性设置缺省值 9.5.11 实现属性表 小结 第10章 Internet COM组件 10.1 ActiveX控件与Internet 10.1.1 Internet对ActiveX控件提出的新要求 ...

    LINQ 实战 7/11

    3.2.2 迭代器回顾 64 3.2.3 延迟查询执行 66 3.3 查询操作符 69 3.3.1 查询操作符是什么 69 3.3.2 标准查询操作符 71 3.4 查询表达式 72 3.4.1 查询表达式是什么 72 3.4.2 编写查询表达式 73 3.4.3...

    深入解析Oracle.DBA入门进阶与诊断案例

     本书给出了大量取自实际工作现场的实例,在分析实例的过程中,兼顾深度与广度,不仅对实际问题的现象、产生原因和相关的原理进行了深入浅出的讲解,更主要的是,结合实际应用环境,提供了一系列解决问题的思路和...

Global site tag (gtag.js) - Google Analytics