22、Q复制性能考量与错误处理

Q复制性能考量与错误处理

1. Q复制环境组件概述

Q复制环境主要由四个关键组件构成,分别是DB2数据库层(包含源数据库和目标数据库)、WebSphere MQ、Q Capture和Q Apply。对这些组件进行调优,能够提升Q复制的性能。

1.1 DB2数据库层调优

对于DB2源数据库或目标数据库,其调优操作与常规数据库调优一致。不过,由于设置了 DATA CAPTURE CHANGES ,DB2日志空间的需求可能会增加。同时,需要对复制控制表执行 RUNSTATS REORGS 操作,将这些表视为普通应用表处理。

1.2 WebSphere MQ层调优

在WebSphere MQ层,队列的 MAXDEPTH 参数很关键。若增加该参数值,需确保为WebSphere MQ分配了足够的磁盘空间以处理相应数量的消息。另外,队列管理器参数 MAXUMSGS 表示可在队列上放置或检索的最大未提交消息数。当更改Q Capture的 commit_interval 参数时,可能需要增加 MAXUMSGS 值。若达到该限制,Q Capture尝试将事务放入发送队列时, MQPUT 操作会失败,错误代码为2024(Syncpoint Limit Reached)。此时,Q Capture可选择提交已完成的操作或回滚。在Q Capture日志中会出现类似如下的错误信息:

<qConnMgr::putRestartMsg> ASN0575E  "Q Capture" : "ASN" : 
"WorkerThread" : The program encountered a WebSphere MQ error "2024" 
while issuing the WebSphere MQ command "MQPUT" on queue "CAPA.
RESTARTQ".

1.3 Q Capture调优

可对Q Capture性能进行调优的参数包括 commit_interval memory_limit sleep_interval max_msg_size
- commit_interval :指定Q Capture将事务提交到WebSphere MQ的时间间隔(毫秒)。
- memory_limit :指定Q Capture在内存中构建DB2事务时可使用的内存量。默认值32 MB适用于大多数工作负载。若Q Capture将事务溢出到磁盘,可尝试增加该值。可通过查看 IBMQREP_CAPMON 表中的 TRANS_SPILLED 列,若值大于零,则需增加内存限制。
- sleep_interval :指定Q Capture到达活动日志末尾并组装内存中剩余事务后等待的毫秒数。默认情况下,Q Capture会休眠5000毫秒(5秒),之后再次开始读取日志。较小的 sleep_interval 可降低延迟、减少空闲时间,并在高事务量环境中提高吞吐量。
- max_msg_size :确定Q Capture为每个发送队列使用的内存缓冲区大小。该参数在包含发送队列的发布队列映射或复制队列映射中设置。事务在内存中构建完成后,Q Capture使用 max_msg_size 参数确定要发布的消息大小。若事务字节大小大于最大消息大小,事务将被拆分为较小的消息。该参数还决定了Q Apply将看到的最大消息大小。对于LOB数据,较小的最大消息大小可能会因需要更频繁地更新目标表来复制整个LOB值而降低Q Apply性能。

若系统CPU资源受限,还需关注 monitor_interval pruning_interval 参数。

1.4 Q Apply调优

若让Q Apply处理表的初始加载,它会在加载过程中将所有事务保存在磁盘的溢出文件中,因此需确保有足够的磁盘空间。确定磁盘空间大小时,需了解加载过程中要存储的行数,这并非易事。

num_apply_agents 参数是按接收队列分配的,在创建复制队列映射时设置。它表示Q Apply用于从接收队列并发应用事务的代理线程数。值为1时,请求按从源表接收的顺序执行事务,默认值为16。

2. 常见错误消息及处理方法

2.1 Q Capture启动时的ASN0569E错误

若启动Q Capture时出现 ASN0569E 启动错误 SIGSEGV ,意味着未启动队列管理器,可使用命令 $ strmqm <QMname> 启动。

2.2 Q Capture的ASN7094E错误

以下是Q Capture日志中显示该错误的示例:

2006-02-15-08.52.43.441000 ASN7094E  "Q Capture" : "ASN" : 
"WorkerThread" : The "P2PSUBSTOPPING" signal failed because the XML 
publication or Q subscription "T10001" has an invalid  subtype "B" or 
an invalid state "G".

可通过以下命令将Q订阅的 ASN.IBMQREP_SUBS STATE 更新为 N

$ db2 connect to db2a
$ db2 "UPDATE asn.ibmqrep_subs SET state = 'N' WHERE subname = 'T10001'"
$ db2 "update asn.ibmqrep_subs set state = 'N' where subname = 'T30001'"
$ db2 connect to db2b
$ db2 "UPDATE asn.ibmqrep_subs SET state = 'N' WHERE subname = 'T30002'"
$ db2 "update asn.ibmqrep_subs set state = 'N' where subname = 'T10002'"

2.3 Q Apply启动时挂起问题

启动Q Apply时,若仅看到如下消息:

ASN0600I  "Q Apply" :  "" : "Initial" : Program "mqapply 9.1.0" is 
starting.

而未看到 ASN7526I 消息(表示Q Apply已开始处理接收队列),可能是Q Apply需要读取的接收队列为非活动状态。可通过以下查询检查每个接收队列的 STATE

$ db2 "SELECT SUBSTR(repqmapname,1,12) AS rqm, SUBSTR(recvq,1,20) 
AS recvq, SUBSTR(sendq,1,20) AS sendq, SUBSTR(adminq,1,20) AS 
adminq, SUBSTR(capture_server,1,5) AS caps, capture_alias AS capal, 
SUBSTR(capture_schema,1,10) AS capschema, state FROM asn.ibmqrep_
recvqueues "

STATE 列的值为 I (表示非活动),可使用以下命令启动接收队列:

$ asnqacmd APPLY_SERVER=tgtdb STARTQ='TGT.RECVQ'

若Q Apply无法处理队列上的消息,且在设置Q订阅时指定停止从接收队列读取消息,接收队列将停止。若使用复制中心,该操作在步骤7中选择;若使用ASNCLP命令,在为 ERROR ACTION 参数赋值时选择。 ERROR ACTION 参数可能的值如下:
- S :停止Q Apply,不应用事务。
- D :禁用订阅并通知Q Capture。
- Q :停止从接收队列读取消息。

可通过以下查询检查 ERROR ACTION 参数的值:

$ db2 "select SUBSTR(subname,1,20) AS subname, SUBSTR(recvq,1,30) AS 
recvq, conflict_rule AS r, conflict_action AS a, error_action AS e, has_
loadphase AS l, CAST(load_type AS CHAR) AS t FROM asn.ibmqrep_targets"

2.4 处理ASN7551E消息

这是一个常见问题,帮助文件列出了需要执行的五个任务,具体步骤如下:
1. 使用 stopq 命令停止Q Apply从接收队列读取消息:

$ asnqacmd APPLY_SERVER=db2b STOPQ='CAPA.TO.APPB.RECVQ'
  1. 停用此复制队列映射的所有Q订阅:
    • 使用步骤1中的接收队列获取RQM名称。
    • 可使用相关查询获取特定接收队列的RQM。
    • 可使用相关查询获取使用该RQM的Q订阅列表。
  2. 清空发送队列和接收队列,具体操作可参考WebSphere MQ的相关章节。
  3. 使用 startq 命令让Q Apply恢复从接收队列读取消息,具体操作可参考Q Apply管理章节。
  4. 激活此复制队列映射的所有Q订阅,具体操作可参考Q订阅维护章节。

2.5 Q Apply的ASN7094E错误

当尝试发出不适合Q订阅或发布的信号时,会出现此错误。例如:

2005-04-02-02.37.43.821590 ASN7094E  "Q Capture" : "ASN" : 
"WorkerThread" : The "P2PREADYTOSTOP" signal failed because the XML 
publication or Q subscription "TAB010002" has an invalid  subtype "B" 
or an invalid state "I".

可将Q订阅 TAB010002 ASN.IBMQREP_SUBS STATE 更新为 N ,然后重启Q Apply。

2.6 Q Apply的ASN7505E错误

当目标表设置不正确时,会出现此错误。例如:

2005-04-02-19.05.20.544083 <QAsub::loadUniqConstrs> ASN7505E  "Q 
Apply" : "ASN" : "BR00000" : The attributes of target columns are not 
set up correctly for Q subscription "TAB010002" (receive queue "CAPA.
TO.APPB.RECVQ", replication queue map "RQMA2B"). Reason code: "6".

此时需要正确设置目标表的属性。

综上所述,通过对Q复制环境各组件的调优以及对常见错误消息的有效处理,能够提升Q复制的性能和稳定性,确保数据复制过程的顺利进行。

下面是Q复制性能调优的流程图:

graph LR
    A[Q复制环境] --> B[DB2数据库层]
    A --> C[WebSphere MQ层]
    A --> D[Q Capture]
    A --> E[Q Apply]
    B --> B1[常规调优]
    B --> B2[处理日志空间]
    B --> B3[对控制表操作]
    C --> C1[调整MAXDEPTH]
    C --> C2[调整MAXUMSGS]
    D --> D1[调整commit_interval]
    D --> D2[调整memory_limit]
    D --> D3[调整sleep_interval]
    D --> D4[调整max_msg_size]
    E --> E1[确保磁盘空间]
    E --> E2[调整num_apply_agents]

以下是Q Apply和Q Capture部分参数的对比表格:
|组件|参数|说明|
| ---- | ---- | ---- |
|Q Capture|commit_interval|指定将事务提交到WebSphere MQ的时间间隔(毫秒)|
|Q Capture|memory_limit|指定在内存中构建DB2事务可使用的内存量|
|Q Capture|sleep_interval|到达活动日志末尾并组装事务后等待的毫秒数|
|Q Capture|max_msg_size|确定为每个发送队列使用的内存缓冲区大小|
|Q Apply|num_apply_agents|从接收队列并发应用事务的代理线程数|

3. Q复制监控与报告工具及方法

3.1 常用监控工具

在Q复制环境中,可使用多种工具进行监控。数据库层可使用DB2 Health Center和Optim Data Studio,Q复制层可使用复制仪表板和Tivoli Monitoring,WebSphere MQ层可使用rfhutil实用程序、WebSphere MQ Explorer和WebSphere MQSC接口(runmqsc)。

3.2 监控指标与方法

3.2.1 Q Capture监控
  • 历史分析 :可通过查看 COUNT (bigint) hour (int) MAX_TRANS_SIZE QUEUES_IN_ERROR ROWS_PROCESSED RUNDATE TRANS_PROCESSED TRANS_SKIPPED TRANS_SPILLED 等指标进行历史分析。
  • 状态检查 :检查Q Capture是否落后于DB2日志,可通过相关命令和工具进行查看。同时,可查看Q Capture的启动参数和启动状态,监控其是否正常启动。
  • 内存使用 :关注 memory_limit 参数,若 IBMQREP_CAPMON 表中的 TRANS_SPILLED 列值大于零,可尝试增加内存限制。
3.2.2 Q Apply监控
  • 历史分析 :分析指标包括 APPLY_LATENCY COUNT(bigint) CURRENT_MEMORY DEADLOCK_RETRIES END2END_LATENCY HOUR (int) KEY_DEPENDENCIES MEM_FULL_TIME MONSTER_TRANS OKSQLSTATE_ERRORS QDEPTH QLATENCY RI_DEPENDENCIES RI_RETRIES ROWS_APPLIED ROWS_NOT_APPLIED RUNDATE TRANS_APPLIED TRANS_SERIALIZED UNIQ_DEPENDENCIES UNIQ_RETRIES 等。
  • 状态检查 :检查Q Apply是否落后于Q Capture,查看其启动状态和日志文件,确保其正常运行。同时,可查询Q Apply的状态,了解其处理接收队列的情况。
  • 性能调优 :关注 num_apply_agents 参数,根据实际情况调整并发应用事务的代理线程数。同时,确保有足够的磁盘空间用于处理初始加载。

3.3 复制警报监控(RAM)

复制警报监控(RAM)可用于监控Q Apply和Q Capture的运行状态。其控制表包括 IBMSNAP_ALERTS IBMSNAP_CONDITIONS IBMSNAP_CONTACTGRP IBMSNAP_CONTACTS IBMSNAP_GROUPS IBMSNAP_MONENQ IBMSNAP_MONPARMS IBMSNAP_MONSERVERS IBMSNAP_MONTRACE IBMSNAP_MONTRAIL IBMSNAP_SUSPENDS IBMSNAP_TEMPLATES 等。

3.3.1 配置步骤
  • 创建控制表 :使用相关命令创建RAM控制表。
  • 设置电子邮件通知 :配置 email_server 等参数,设置电子邮件通知。
  • 启动监控 :使用相关命令启动RAM,开始监控Q Apply和Q Capture。
3.3.2 管理操作
  • 更改监控设置 :可使用相关命令更改监控设置,如调整监控间隔、警报阈值等。
  • 暂停和恢复监控 :使用 ASNMCMD SUSPEND ASNMCMD RESUME 命令暂停和恢复监控。
  • 删除监控暂停设置 :使用相关命令删除监控暂停模板。

4. Q复制环境管理与操作

4.1 控制表管理

4.1.1 创建控制表

可使用ASNCLP命令或复制中心创建Q复制控制表,包括Q Apply控制表和Q Capture控制表。创建时需注意在同一数据库中创建时的相关设置。

4.1.2 删除控制表

同样可使用ASNCLP命令或复制中心删除控制表。

4.1.3 修剪控制表

定期修剪控制表,可使用 PRUNE 命令,设置合适的 pruning_interval 参数。

4.2 Q订阅管理

4.2.1 创建Q订阅

使用 CREATE QSUB 命令创建Q订阅,设置相关参数,如 ERROR ACTION HEADER MESSAGE CONTENT TYPE MESSAGE FORMAT 等。

4.2.2 激活和停用Q订阅

使用相关命令激活或停用Q订阅,确保订阅状态符合需求。

4.2.3 监控Q订阅状态

可通过查询相关表,列出Q订阅的状态,了解其运行情况。

4.3 队列管理

4.3.1 队列创建

使用WebSphere MQ命令创建队列,包括本地队列、远程队列和传输队列等,设置合适的参数,如 MAXDEPTH MAXMSGL 等。

4.3.2 队列状态检查

使用相关命令检查队列的状态,确保队列正常运行。

4.3.3 队列操作

可对队列进行清空、启动和停止等操作,使用相应的命令实现。

4.4 Q复制环境复制与升级

4.4.1 复制环境

可使用相关命令复制Q复制环境,确保多个环境的一致性。

4.4.2 升级环境

使用 ASNCLP PROMOTE 过程升级Q复制环境,提升环境性能和功能。

以下是Q复制环境管理操作的流程图:

graph LR
    A[Q复制环境管理] --> B[控制表管理]
    A --> C[Q订阅管理]
    A --> D[队列管理]
    A --> E[环境复制与升级]
    B --> B1[创建控制表]
    B --> B2[删除控制表]
    B --> B3[修剪控制表]
    C --> C1[创建Q订阅]
    C --> C2[激活/停用Q订阅]
    C --> C3[监控Q订阅状态]
    D --> D1[创建队列]
    D --> D2[检查队列状态]
    D --> D3[队列操作]
    E --> E1[复制环境]
    E --> E2[升级环境]

以下是Q复制环境中部分命令的用途表格:
|命令|用途|
| ---- | ---- |
|asnqacmd|用于Q Apply的管理,如启动、停止、查询状态等|
|asnqccmd|用于Q Capture的管理,如启动、停止、查询状态等|
|asnqmfmt|用于查看消息,检索Q Capture重启队列信息|
|asnqanalyze|用于报告系统情况|

通过对Q复制环境的全面管理和操作,结合性能调优和错误处理,能够确保Q复制系统的高效、稳定运行,满足数据复制和同步的需求。在实际应用中,需根据具体情况灵活运用这些方法和工具,不断优化Q复制环境。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值