19、数据库复制监控与警报设置指南

数据库复制监控与警报设置指南

在数据库复制环境中,有效的监控和警报设置对于确保系统的稳定运行至关重要。本文将介绍手动监控和使用复制警报监视器(Replication Alert Monitor,简称 RAM)进行监控的方法,以及如何创建控制表、设置电子邮件通知、监控 Q Capture 和 Q Apply 进程,最后启动复制警报监视器。

手动监控

手动监控是指编写程序和脚本来模拟复制警报监视器的功能。以下是一些手动监控的示例命令:
- 检查在 db2a 服务器上运行的控制表模式为 ASN 的 Q Capture 是否正在运行:

$ asnqccmd CAPTURE_SERVER=db2a STATUS SHOW DETAILS
  • 检查在 db2b 服务器上运行的控制表模式为 ASN 的 Q Apply 是否正在运行:
$ asnqacmd APPLY_SERVER=db2b STATUS SHOW DETAILS
  • 检查队列管理器 QMB 上接收队列的深度:
$ runmqsc QMB
:dis ql(CAPA.TO.APPB.RECVQ) CURDEPTH
使用复制警报监视器进行监控

复制警报监视器(RAM)是一个与复制代码捆绑在一起的程序,用于检查各种复制对象的状态并进行报告。

复制警报监视器控制表的位置

复制警报监视器控制表可以放在 Q Capture 运行的服务器上、Q Apply 运行的服务器上,或者放在一个完全不同的服务器上。例如,有一个名为 MONDB 的监控服务器和两个被监控的服务器 DB2A 和 DB2B。

Q Capture 和 Q Apply 的监控条件

在设置复制警报监视器之前,需要了解可以监控的 Q Capture 和 Q Apply 条件。

Q Capture 警报条件
| 条件名称 | 触发警报的情况 |
| — | — |
| QCAPTURE_STATUS | Q Capture 未运行时 |
| QCAPTURE_ERRORS | 在 IBMQREP_CAPTRACE 表的 OPERATION 列中找到值为 ERROR 的行时 |
| QCAPTURE_WARNINGS | 在 IBMQREP_CAPTRACE 表的 OPERATION 列中找到值为 WARNING 的行时 |
| QCAPTURE_LATENCY | Q Capture 延迟超过指定阈值时(延迟以秒为单位) |
| QCAPTURE_MEMORY | Q Capture 使用的内存超过指定阈值时(内存以兆字节为单位) |
| QCAPTURE_TRANSIZE | Q Capture 处理的事务使用的内存超过指定阈值时(内存以兆字节为单位) |
| QCAPTURE_SUBSINACT | Q Capture 停用 Q 订阅时 |

Q Apply 警报条件
| 条件名称 | 触发警报的情况 |
| — | — |
| QAPPLY_STATUS | Q Apply 未运行时 |
| QAPPLY_ERRORS | 在 IBMQREP_APPLYTRACE 表的 OPERATION 列中找到值为 ERROR 的行时 |
| QAPPLY_WARNINGS | 在 IBMQREP_APPLYTRACE 表的 OPERATION 列中找到值为 WARNING 的行时 |
| QAPPLY_LATENCY | Q Apply 延迟超过指定阈值时(延迟以毫秒为单位) |
| QAPPLY_EELATENCY | Q Apply 端到端延迟超过指定阈值时(延迟以秒为单位) |
| QAPPLY_MEMORY | Q Apply 使用的内存超过指定阈值时(内存以兆字节为单位) |
| QAPPLY_EXCEPTIONS | 由于目标端的冲突或 SQL 错误,在 IBMQREP_EXCEPTIONS 表中插入行时 |
| QAPPLY_SPILLQDEPTH | 溢出队列的满度超过指定阈值时(满度以百分比表示) |
| QAPPLY_QDEPTH | 任何队列的满度超过指定阈值时(满度以百分比表示) |

创建 RAM 控制表

在以下示例中,我们将复制警报监视器控制表存储在名为 MONDB 的数据库中。首先,需要创建一个表空间:

$ db2 connect to mondb
$ db2 "CREATE REGULAR TABLESPACE TSPACEMON PAGESIZE 4 K MANAGED BY SYSTEM USING ('C:\tspacemon.txt' ) EXTENTSIZE 16 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP DROPPED TABLE RECOVERY ON"

然后,运行以下 ASNCLP 脚本来创建监视器表:

ASNCLP SESSION SET TO SQL REPLICATION;
SET RUN SCRIPT NOW STOP ON SQL ERROR ON;
SET SERVER MONITOR TO DB mondb;
CREATE CONTROL TABLES FOR MONITOR CONTROL SERVER IN UW OTHERS tspacemon;

最后,检查表是否已成功创建:

$ db2 CONNECT TO mondb
$ db2 list tables for schema asn
设置电子邮件通知

设置电子邮件通知需要以下步骤:
1. 创建联系人

ASNCLP SESSION SET TO SQL REPLICATION;
SET RUN SCRIPT NOW STOP ON SQL ERROR ON;
set server monitor to db mondb;
CREATE CONTACT oncalldba EMAIL "kumarp3@uk.ibm.com";
  1. 创建监视器警报

要使用通知功能,DB2 管理服务器(DAS)需要处于活动状态,并且需要在 DAS 中注册一个 SMTP 服务器。可以使用以下命令尝试启动 DAS:

$ db2admin start

如果 DAS 已经处于活动状态,将返回 SQL4409W 消息。可以使用以下命令获取管理信息:

$ db2 get admin cfg

如果 SMTP_SERVER 值为空,需要更新配置文件:

$ db2 UPDATE ADMIN CFG USING SMTP_SERVER relay.uk.ibm.com
监控 Q Capture 和 Q Apply

可以使用 ASNCLP 脚本定义一个监视器来监控 Q Capture 和 Q Apply 的各种条件。

监控 Q Capture

以下是监控在 DB2A 上运行的 Q Capture 的 ASNCLP 脚本:

ASNCLP SESSION SET TO Q REPLICATION;
SET RUN SCRIPT NOW STOP ON SQL ERROR ON;
SET SERVER MONITOR TO DB mondb;
SET SERVER CAPTURE TO DB db2a;
CREATE ALERT CONDITIONS FOR QCAPTURE SCHEMA ASN
MONITOR QUALIFIER MONAC1
Notify contact oncalldba (status down, errors, warnings, latency 30, subscriptions inactive);
  • 监视器名称 :MONAC1,由三部分组成: MON<DB2-where-program-is-running><type-of-prog><monitor-number>
  • 联系人名称 oncalldba ,需要在设置电子邮件通知时创建。
  • 每个指定的条件都会在 IBMSNAP_CONDITIONS 表中生成一行,并在 IBMSNAP_MONPARMS 表中写入一行。
监控 Q Apply

以下是监控在 DB2B 上运行的 Q Apply 的 ASNCLP 脚本:

ASNCLP SESSION SET TO Q REPLICATION;
SET RUN SCRIPT NOW STOP ON SQL ERROR ON;
SET SERVER MONITOR TO DB mondb;
SET SERVER APPLY   TO DB db2b;
CREATE ALERT CONDITIONS FOR QAPPLY SCHEMA TST
MONITOR QUALIFIER MONBA1
Notify contact oncalldba (status down, errors, warnings, exceptions, queue depth 75);

也可以使用一个监视器限定符同时监控 Q Capture 和 Q Apply:

ASNCLP SESSION SET TO Q REPLICATION;
SET RUN SCRIPT NOW STOP ON SQL ERROR ON;
SET SERVER MONITOR TO DB mondb;
SET SERVER CAPTURE TO DB db2a;
CREATE ALERT CONDITIONS FOR QCAPTURE SCHEMA ASN
MONITOR QUALIFIER MONACBA
Notify contact oncalldba (status down, errors, warnings, latency 30, subscriptions inactive);
SET SERVER MONITOR TO DB mondb;
SET SERVER APPLY   TO DB db2b;
CREATE ALERT CONDITIONS FOR QAPPLY SCHEMA ASN
MONITOR QUALIFIER MONACBA
Notify contact oncalldba (status down, errors, warnings, latency 30, subscriptions inactive);
启动复制警报监视器

创建监视器后,需要使用 asnmon 命令启动它们。以下是 asnmon 命令的参数:
| 参数 | 说明 | 默认值 |
| — | — | — |
| monitor_server= | 指定复制警报监视器运行的监视器控制服务器的名称,以及监视器控制表所在的位置。必须作为第一个参数输入。 | 无 |
| monitor_qual= | 指定复制警报监视器程序使用的监视器限定符。必须指定,名称区分大小写,最大长度为 18 个字符。 | 无 |
| monitor_interval= | 指定复制警报监视器针对此监视器限定符运行的频率(以秒为单位)。如果设置 runonce 参数为 y ,此参数将被忽略。 | 300 秒 |
| runonce=[n/y] | 指定复制警报监视器是否仅针对此监视器限定符运行一次。 n 表示按 monitor_interval 指定的频率运行; y 表示仅运行一个监控周期。 | n |
| autoprune=[y/n] | 指定是否启用复制警报监视器警报( IBMSNAP_ALERTS )表中记录的自动清理。 y 表示自动清理比 alert_prune_limit 值更旧的行; n 表示禁用自动清理。 | y |
| logreuse=[n/y] | 指定复制警报监视器是重用还是追加消息到其诊断日志文件( <db2instance>.<monitor_server>.<mon_qual>.MON.log )。 n 表示追加消息; y 表示删除并重新创建日志文件。 | n |
| logstdout=[n/y] | 指定复制警报监视器将消息发送到何处。 n 表示仅发送到日志文件; y 表示同时发送到日志文件和标准输出(stdout)。 | n |
| term=[y/n] | 指定当 DB2 处于静止状态时,监视器程序是否继续运行。 y 表示停止运行; n 表示继续运行,在 DB2 退出静止状态后恢复监控。 | y |
| alert_prune_limit= | 指定复制警报监视器警报( IBMSNAP_ALERTS )表中记录的保留时间(以分钟为单位)。超过此值的行将被清理。 | 10,080 分钟(七天) |
| trace_limit= | 指定复制警报监视器跟踪( IBMSNAP_MONTRACE )表中记录在符合清理条件之前可以保留的时间(以分钟为单位)。 | 10,080 分钟(七天) |
| max_notifications_per_alert= | 指定在 max_notifications_minutes 参数指定的时间段内,发送给用户的相同警报的最大数量。 | 3 |
| max_notifications_minutes= | 与 max_notifications_per_alert 参数一起使用,指示警报条件发生的时间段。 | 60 分钟 |
| pwdfile= | 指定密码文件的完全限定名称。使用 asnpwd 命令定义此文件。 | asnpwd.aut |
| monitor_path= | 指定复制警报监视器程序使用的日志文件的位置。 | 调用 asnmon 命令的目录 |
| monitor_errors=

| 指定如果在警报监视器连接到监视器控制服务器之前检测到致命错误,将通知发送到的电子邮件地址。可以输入多个地址,用逗号分隔。 | 无 |
| email_server= | 指定电子邮件服务器地址。仅在使用带有 SMTP 的 ASNMAIL 退出例程时输入。 | 无 |
| console=[n/y] | 指定复制警报监视器是否将警报通知发送到 z/OS 控制台。如果设置为 y 且已配置电子邮件服务器,警报将同时发送到 z/OS 控制台和电子邮件服务器。 | n |

可以使用以下命令查询 IBMSNAP_MONPARMS 表来查看这些默认值:

$ db2 "select substr(monitor_qual,1,10) as monqual, alert_prune_limit as APL, autoprune as AP, substr(email_server,1,20) as emailserver, logreuse as R, notif_per_alert as NPA, notif_minutes as NM FROM asn.ibmsnap_monparms "
$ db2 "select substr(monitor_qual,1,10) as monqual, substr(monitor_errors,1,10) as ME, monitor_interval as MI, substr(monitor_path,1,20) as monpath, runonce as R, term as T, trace_limit as TL FROM asn.ibmsnap_monparms "

通过以上步骤,你可以建立一个全面的数据库复制监控和警报系统,确保数据库复制环境的稳定运行。

数据库复制监控与警报设置指南(续)

监控与警报系统的进一步优化

在完成了基本的监控和警报设置后,我们可以对系统进行进一步的优化,以提高监控效率和准确性。

调整监控参数

根据实际的业务需求和系统性能,我们可以调整 asnmon 命令的参数。例如,如果系统的负载较高,我们可以适当缩短 monitor_interval 的时间间隔,以便更及时地发现问题;如果警报数量过多,我们可以调整 max_notifications_per_alert max_notifications_minutes 参数,减少重复警报的发送。

以下是一个调整 monitor_interval 参数的示例:

asnmon monitor_server=MONDB monitor_qual=MONAC1 monitor_interval=120

这个命令将 MONAC1 监视器限定符的监控间隔调整为 120 秒。

监控指标的可视化

为了更直观地了解系统的运行状态,我们可以将监控指标进行可视化。可以使用一些监控工具,如 Grafana 或 Prometheus,将 IBMSNAP_ALERTS IBMSNAP_MONTRACE 表中的数据进行采集和展示。

以下是一个简单的 mermaid 流程图,展示了数据采集和可视化的过程:

graph LR
    A[数据库] --> B[数据采集器]
    B --> C[监控工具(Grafana/Prometheus)]
    C --> D[可视化界面]
故障处理与恢复

在监控过程中,一旦触发了警报,我们需要及时进行故障处理和恢复。

故障排查流程

当收到警报时,我们可以按照以下流程进行故障排查:
1. 确认警报信息 :查看警报的详细信息,包括警报类型、发生时间、相关的监控指标等。
2. 检查系统状态 :使用手动监控命令检查 Q Capture 和 Q Apply 的运行状态,以及队列的深度等。
3. 分析日志文件 :查看复制警报监视器的诊断日志文件,查找可能的错误信息。
4. 定位问题根源 :根据以上信息,定位问题的根源,如内存不足、网络故障等。

以下是一个 mermaid 流程图,展示了故障排查的流程:

graph LR
    A[收到警报] --> B[确认警报信息]
    B --> C[检查系统状态]
    C --> D[分析日志文件]
    D --> E[定位问题根源]
    E --> F[解决问题]
恢复操作

在定位问题根源后,我们可以采取相应的恢复操作。例如,如果是 Q Capture 或 Q Apply 进程停止运行,我们可以使用相应的启动命令重新启动它们:

# 启动 Q Capture
asnqccmd CAPTURE_SERVER=db2a START

# 启动 Q Apply
asnqacmd APPLY_SERVER=db2b START
监控系统的维护

为了确保监控系统的稳定运行,我们需要进行定期的维护。

日志文件管理

定期清理复制警报监视器的诊断日志文件,避免日志文件过大占用过多的磁盘空间。可以根据 logreuse 参数的设置,选择重用或追加日志文件。

控制表维护

定期检查 IBMSNAP_ALERTS IBMSNAP_MONTRACE 表的记录数量,确保自动清理功能正常工作。如果发现记录数量过多,可以手动清理这些表中的旧记录。

# 手动清理 IBMSNAP_ALERTS 表中的旧记录
db2 "DELETE FROM asn.ibmsnap_alerts WHERE alert_time < CURRENT TIMESTAMP - 7 DAYS"
总结

通过本文的介绍,我们了解了数据库复制监控和警报设置的详细步骤,包括手动监控、使用复制警报监视器进行监控、创建控制表、设置电子邮件通知、监控 Q Capture 和 Q Apply 进程,以及启动复制警报监视器等。同时,我们还介绍了监控与警报系统的进一步优化、故障处理与恢复,以及监控系统的维护等内容。

在实际应用中,我们可以根据具体的业务需求和系统环境,灵活调整监控参数和警报设置,确保数据库复制环境的稳定运行。通过建立一个全面的监控和警报系统,我们可以及时发现和解决问题,提高系统的可靠性和可用性。

【评估多目标跟踪方法】9个高度敏捷目标在编队中的轨迹和测量研究(Matlab代码实现)内容概要:本文围绕“评估多目标跟踪方法”,重点研究9个高度敏捷目标在编队飞行中的轨迹生成测量过程,并提供完整的Matlab代码实现。文中详细模拟了目标的动态行为、运动约束及编队结构,通过仿真获取目标的状态信息观测数据,用于验证和比较不同多目标跟踪算法的性能。研究内容涵盖轨迹建模、噪声处理、传感器测量模拟以及数据可视化等关键技术环节,旨在为雷达、无人机编队、自动驾驶等领域的多目标跟踪系统提供可复现的测试基准。; 适合人群:具备一定Matlab编程基础,从事控制工程、自动化、航空航天、智能交通或人工智能等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于多目标跟踪算法(如卡尔曼滤波、粒子滤波、GM-CPHD等)的性能评估对比实验;②作为无人机编队、空中交通监控等应用场景下的轨迹仿真传感器数据分析的教学研究平台;③支持对高度机动目标在复杂编队下的可观测性跟踪精度进行深入分析。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注轨迹生成逻辑测量模型构建部分,可通过修改目标数量、运动参数或噪声水平来拓展实验场景,进一步提升对多目标跟踪系统设计评估的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值