数据库复制监控与警报设置指南
在数据库复制环境中,有效的监控和警报设置对于确保系统的稳定运行至关重要。本文将介绍手动监控和使用复制警报监视器(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";
- 创建监视器警报
要使用通知功能,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 进程,以及启动复制警报监视器等。同时,我们还介绍了监控与警报系统的进一步优化、故障处理与恢复,以及监控系统的维护等内容。
在实际应用中,我们可以根据具体的业务需求和系统环境,灵活调整监控参数和警报设置,确保数据库复制环境的稳定运行。通过建立一个全面的监控和警报系统,我们可以及时发现和解决问题,提高系统的可靠性和可用性。
超级会员免费看
43

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



