Q复制环境管理与监控全解析
1. Q Apply管理操作
在Q复制环境中,Q Apply的管理操作十分重要。以下是一些常见的操作及对应命令:
-
检查Q Apply状态
:使用
asnqacmd
命令结合
qryparms
选项可检查Q Apply的状态,命令如下:
asnqacmd APPLY_SERVER=db2b APPLY_SCHEMA=asn QRYPARMS
- 停止Q Apply :停止Q Apply的命令示例如下:
$ asnqacmd APPLY_SERVER=db2b STOP
- 查询Q Apply状态 :若要查询Q Apply的详细状态,可使用以下命令:
asnqacmd APPLY_SERVER=db2b STATUS SHOW DETAILS
该命令中的
STATUS SHOW DETAILS
选项会给出如下信息:
- Q Apply是否正在运行
- 程序启动后的时长
- Q Apply诊断日志的位置
- 活动Q订阅的数量
- 用于计算平均值的时间段
对于每个活动的接收队列,还会显示以下信息:
| 信息项 | 说明 |
| ---- | ---- |
| 队列名称 | 接收队列的具体名称 |
| 活动Q订阅的数量 | 该队列上活动的Q订阅数量 |
| OLDEST_TRANS和OLDEST_INFLIGHT_TRANS的值 | 从
IBMQREP_APPLYMON
表中收集的值,可能比控制表中的值更新 |
| 平均端到端延迟 | 数据从源到目标的平均延迟时间 |
| 平均Q Capture延迟 | Q Capture处理数据的平均延迟 |
| 平均队列延迟 | 数据在队列中的平均延迟 |
| 平均Q Apply延迟 | Q Apply处理数据的平均延迟 |
| 浏览器线程读取事务的内存使用量 | 以字节为单位 |
| 队列上的消息数量(队列深度) | 队列中当前消息的数量 |
| Q Apply提交到目标的最旧事务的逻辑日志序列号 | 用于跟踪事务处理进度 |
2. 启动接收队列
若Q Apply日志中包含消息
ASN7525I
,提示接收队列未处于活动状态且未被Q Apply程序处理,可按以下步骤操作:
首先,通过查询
IBMQREP_RECVQUEUES
表的
STATE
列来检查接收队列的状态。若状态标记为
I
(非活动),可使用以下两种方法之一重启:
-
使用
asnqacmd
命令的
startq
参数
:无需重启Q Apply,命令如下:
asnqacmd APPLY_SERVER=db2b STARTQ=CAPA.TO.APPB.RECVQ
-
修改
IBMQREP_RECVQUEUES表的STATE列为A并重启Q Apply 。
3. 密码文件的使用
在两种情况下需要使用密码文件:
- 当Q Capture和Q Apply运行在不同机器上,且期望Q Apply执行初始加载时,Q Apply必须能够连接到远程Q Capture服务器,此时需要在Q Apply服务器上创建密码文件。
- 若使用复制警报监视器,则需要在运行监视器表的系统上创建密码文件。
若Q Capture和Q Apply运行在同一台机器上(即都是本地数据库),则无需密码文件。
创建密码文件使用
asnpwd
命令,该命令的不同参数取决于所需的任务,具体如下表所示:
| 任务 | 命令 |
| ---- | ---- |
| 创建/初始化 |
asnpwd {INIT} [ENCRYPT {ALL|PASSWORD}] [{USING} <file-path-name>]
|
| 添加别名 |
asnpwd {ADD ALIAS} <alias-name> {ID} <user-id> {PASSWORD} <password> [{USING} <file-path-name>]
|
| 修改别名 |
asnpwd {MODIFY ALIAS} <alias-name> {ID} <user-id> {PASSWORD} <password> [{USING} <file-path-name>]
|
| 删除别名 |
asnpwd {DELETE ALIAS} <alias-name> [{USING} <file-path-name>]
|
| 列出条目 |
asnpwd {LIST} [{USING} <file-path-name>]
|
| 带跟踪运行 |
asnpwd -t {INIT|ADD|MODIFY|DELETE|LIST}
|
以下是创建和操作密码文件的示例:
- 创建默认名称(
asnpwd.aut
)的密码文件:
asnpwd init encrypt password
-
在
c:\temp目录创建名为passfil.txt的密码文件:
asnpwd init encrypt password using c:\temp\passfil.txt
-
为服务器
DB2A添加别名,用户ID为db2admin,密码为fred:
asnpwd ADD ALIAS db2a ID db2admin PASSWORD fred USING c:\temp\passfil.txt
- 列出密码文件中的所有条目:
asnpwd LIST USING c:\temp\passfil.txt
-
修改
db2admin用户的密码为heather:
asnpwd MODIFY ALIAS db2a ID db2admin PASSWORD heather USING c:\temp\passfil.txt
-
删除
db2a的条目:
asnpwd DELETE ALIAS db2a USING c:\temp\passfil.txt
需注意,若使用非标准密码文件,应更新
APPLYPARMS
表。
4. 复制(提升)Q复制环境
若在测试机上开发了复制解决方案,想在生产机上构建类似解决方案,有两种选择:
-
使用ASNCLP脚本
:将测试脚本迁移到生产机,编辑脚本以反映新的模式、数据库名称等,然后运行。但要确保脚本完整,避免遗漏更改。
-
使用ASNCLP命令的
PROMOTE
功能
:以下以将单向设置从测试环境提升到生产环境为例进行说明。假设测试环境中
DB2A
和
DB2B
之间已设置复制,要迁移到生产环境的
DB2C
和
DB2D
,需按以下步骤操作:
1. 在
DB2C
上创建Q Capture控制表。
2. 在
DB2D
上创建Q Apply控制表。
3. 在
DB2C
和
DB2D
上创建WebSphere MQ环境。
4. 创建ASNCLP命令文件
promote_uni.asnclp
,将相关值替换到占位符中(保留双引号):
ASNCLP SESSION SET TO Q REPLICATION;
SET RUN SCRIPT NOW STOP ON SQL ERROR ON;
SET LOG "prom.log";
SET SERVER CAPTURE TO DBALIAS db2a ID "<ida>" PASSWORD "<pa>" PROMOTE TO DBALIAS db2c ID ""<idc>" PASSWORD "<pc>" SCHEMA asnp;
SET SERVER TARGET TO DBALIAS db2b ID "<idb>" PASSWORD "<pb>" PROMOTE TO DBALIAS db2d ID "<idd>" PASSWORD "<pd>" SCHEMA asnp;
SET OUTPUT PROMOTE SCRIPT "replqmap_qsub.in";
SET OUTPUT CAPTURE SCRIPT "promote_capture_repqmap.sql";
SET OUTPUT TARGET SCRIPT "promote_target_repqmap.sql";
PROMOTE REPLQMAP LIKE "%";
PROMOTE QSUB REPLQMAP LIKE "%";
5. 运行ASNCLP命令文件:
asnclp -f promote_uni.asnclp
任何错误消息将写入
prom.log
文件。若命令执行成功,将生成
replqmap_qsub.in
文件,其中包含复制队列映射和Q订阅的定义,示例如下:
ASNCLP SESSION SET TO Q REPLICATION;
#Current Q Capture definitions are at arch level 0905
#Current Q Apply definitions are at arch level 0905
SET OUTPUT CAPTURE SCRIPT "promote_capture_repqmap.sql";
SET OUTPUT TARGET SCRIPT "promote_target_repqmap.sql";
SET LOG "prom.log";
SET SERVER CAPTURE TO DB DB2C ID db2admin PASSWORD "xxxxxxxx";
SET CAPTURE SCHEMA SOURCE "ASNP";
SET SERVER TARGET TO DB DB2D ID db2admin PASSWORD "xxxxxxxx";
SET APPLY SCHEMA "ASNP";
CREATE REPLQMAP "RQMA2B"
USING ADMINQ "CAPA.ADMINQ.REMOTE" RECVQ "CAPA.TO.APPB.RECVQ" SENDQ
"CAPA.TO.APPB.SENDQ.REMOTE"
NUM APPLY AGENTS 3 MAX AGENTS CORRELID 0 MEMORY LIMIT 9 ERROR ACTION
S HEARTBEAT INTERVAL 0 MAX MESSAGE SIZE 4;
ASNCLP SESSION SET TO Q REPLICATION;
#Current Q Capture definitions are at arch level 0905
#Current Q Apply definitions are at arch level 0905
SET OUTPUT CAPTURE SCRIPT "promote_capture_repqmap.sql";
SET OUTPUT TARGET SCRIPT "promote_target_repqmap.sql";
SET LOG "prom.log";
SET SERVER CAPTURE TO DB DB2C ID db2admin PASSWORD "xxxxxxxx";
SET CAPTURE SCHEMA SOURCE "ASNP";
SET SERVER TARGET TO DB DB2D ID db2admin PASSWORD "xxxxxxxx";
SET APPLY SCHEMA "ASNP";
SET PROFILE CUSTOMER FOR OBJECT TARGET TABLESPACE OPTIONS UW
BUFFERPOOL IBMDEFAULTBP PAGESIZE 4096;
CREATE QSUB ( SUBNAME "TAB1" REPLQMAP "RQMA2B"
DB2ADMIN.CUSTOMER OPTIONS ALL CHANGED ROWS N HAS LOAD PHASE I SPILL_
MODELQ IBMQREP.SPILL.MODELQ.0.1.1 SUPPRESS DELETES N
TARGET NAME FRED.CUSTOMER IN QAASN CREATE USING PROFILE CUSTOMER
TYPE USERTABLE
TRGCOLS INCLUDE ( CID CID,HISTORY HISTORY,INFO INFO ) KEYS ( CID )
CONFLICT ACTION F ERROR ACTION Q LOAD TYPE 2);
此过程将把复制队列映射和Q订阅定义从测试系统提升到生产系统。
5. 监控与报告
为确保Q复制环境的正常运行,需要对不同层次进行监控。以下是各层次的监控要点及操作步骤:
-
数据库层
:主要检查DB2实例是否运行,以及能否连接到参与复制的数据库,同时要考虑Q Capture服务器的日志使用情况。
-
WebSphere MQ层
:
-
检查队列管理器状态
:使用
DSPMQ
命令显示队列管理器的状态:
$ dspmq
若队列管理器未处于活动状态,将显示
STATUS(Ended unexpectedly)
,此时需使用
STRMQM
命令启动。
-
检查监听器状态
:使用
DISPLAY LSSTATUS
命令检查监听器是否运行:
$ runmqsc QMA
dis lsstatus(*)
若监听器未运行,需按相关步骤启动。
-
检查通道状态
:使用
DISPLAY CHSTATUS
命令检查通道状态:
$ runmqsc QMA
dis chstatus(*)
若通道未运行,将显示
AMQ8420: Channel Status not found
。若通道状态为
RETRYING
,可能是另一个队列管理器未激活或监听器未启动,需按相应步骤启动通道。
-
检查接收队列状态
:使用以下查询检查接收队列的状态:
$ db2 "SELECT state, state_info, recvq FROM asn.ibmqrep_recvqueues"
若接收队列未处于活动状态(
A
),可使用
ASNQACMD STARTQ
命令激活。
-
检查Q订阅状态
:使用以下查询检查Q订阅的状态:
$ db2 "SELECT SUBSTR(subname,1,10) AS subname, state AS s, state_time,
state_info FROM asn.ibmqrep_subs"
-
Q复制层
:
-
监控Q Capture启动
:检查Q Capture日志中是否包含以下两条消息,以确认Q Capture是否成功启动:
-
ASN0572I:表示Q Capture已成功启动。 -
ASN7010I:表示Q订阅已成功激活。
-
-
检查Q Capture线程状态
:使用
ASNQCCMD命令的STATUS选项检查线程状态:
-
监控Q Capture启动
:检查Q Capture日志中是否包含以下两条消息,以确认Q Capture是否成功启动:
$ asnqccmd CAPTURE_SERVER=db2a STATUS
所有线程都应处于运行状态。
通过以上管理和监控操作,可以确保Q复制环境的稳定运行,及时发现并解决潜在问题。
Q复制环境管理与监控全解析
6. 监控工具及常见问题处理
除了上述各层次的基本监控操作外,还有一些监控工具和常见问题的处理方法值得关注。
6.1 复制警报监视器
复制警报监视器是一个重要的监控工具,当满足特定条件时,它会发出警报。使用复制警报监视器时,需要在运行监视器表的系统上创建密码文件。
6.2 常见问题及解决方法
-
队列管理器意外停止
:当队列管理器的状态显示为
STATUS(Ended unexpectedly)时,需要使用STRMQM命令启动队列管理器。 -
监听器未运行
:若监听器状态不是
RUNNING,需要按照相关步骤启动监听器。 -
通道状态为
RETRYING:这可能是另一个队列管理器未激活或监听器未启动,需要检查并启动相应的组件。 -
接收队列未激活
:当接收队列状态不是
A时,可使用ASNQACMD STARTQ命令激活。
以下是一个简单的流程图,展示了WebSphere MQ层常见问题的处理流程:
graph TD;
A[队列管理器状态检查] -->|异常| B[使用STRMQM启动];
A -->|正常| C[监听器状态检查];
C -->|未运行| D[启动监听器];
C -->|运行中| E[通道状态检查];
E -->|未运行或RETRYING| F[检查并启动相关组件];
E -->|运行中| G[接收队列状态检查];
G -->|未激活| H[使用ASNQACMD STARTQ激活];
G -->|激活| I[结束];
7. Q复制性能考虑
在Q复制环境中,性能是一个关键因素。以下是一些影响Q复制性能的因素及优化建议:
| 影响因素 | 优化建议 |
| ---- | ---- |
| 网络延迟 | 确保网络稳定,减少延迟。可考虑使用高速网络或优化网络配置。 |
| 队列深度 | 监控队列深度,避免队列积压。可调整队列参数或增加处理能力。 |
| 线程数量 | 合理配置Q Capture和Q Apply的线程数量,确保所有线程都能高效运行。 |
| 数据库性能 | 优化数据库性能,如调整缓冲区大小、优化索引等。 |
8. 总结
本文全面介绍了Q复制环境的管理和监控方法。从Q Apply的管理操作,如检查状态、停止和启动,到密码文件的创建和使用,再到复制环境的提升过程,详细阐述了各个环节的操作步骤。同时,对不同层次的监控要点进行了说明,包括数据库层、WebSphere MQ层和Q复制层,并介绍了一些监控工具和常见问题的处理方法。此外,还考虑了Q复制性能的影响因素及优化建议。
通过遵循这些管理和监控方法,可以确保Q复制环境的稳定运行,及时发现并解决潜在问题,提高系统的可靠性和性能。在实际应用中,建议根据具体情况进行适当的调整和优化,以满足不同的业务需求。
以下是一个简单的总结列表,回顾本文的主要内容:
- Q Apply管理操作:检查状态、停止、启动接收队列等。
- 密码文件使用:创建、添加别名、修改和删除条目。
- 复制环境提升:使用ASNCLP的
PROMOTE
功能。
- 各层次监控:数据库层、WebSphere MQ层和Q复制层。
- 监控工具和常见问题处理:复制警报监视器及常见问题的解决方法。
- Q复制性能优化:考虑网络延迟、队列深度、线程数量和数据库性能等因素。
通过全面的管理和监控,能够更好地维护Q复制环境,为业务的稳定运行提供保障。
超级会员免费看
2758

被折叠的 条评论
为什么被折叠?



