Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103157560
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-05-31 17:57:28

ER:监视

本节讨论以下主题:



本节主要关注应该 监视什么,而不是可以 监视什么。可以收集的信息量非常大,无法在本教程中全面讨论。所以本节只讨论经常出现问题的领域,以及在深入研究之前需要检查的领域。问题常常只与一个服务器相关,比如日志文件写满、引擎停止运行或连接问题。尽管实际问题可能只发生在一个服务器上,但是应该分别检查每个 ER 服务器。请记住,ER 是在 IDS、操作系统和网络之上建立的。这些部分都可能导致 ER 出现问题。确定问题出现在某个服务器上之后,就要深入研究 ER 的数据流。







表 13 列出了对于 Enterprise Replication 比较重要的 onstat 选项。本节后面会详细讨论那些粗体显示的选项:



onstat 功能 描述
onstat -g cat 全局编目 记录 ER 内部状态和活动的内存结构
onsat -g ddr 搜索和重放位置 扫描日志页面并决定要复制的日志记录
onsat -g grp 分组器 在提交事务之前持有事务、压缩事务、对事务进行排队以便发送
onsat -g nif 网络接口功能 处理每个连接的数据包压缩和发送/接收线程
onsat -g dss 数据同步统计 在目标实例上重放复制的数据,处理冲突解决,数据映射
onsat -g rcv 接收统计信息和数据同步摘要 接收和发送队列器、全局编目和数据同步组件的消息
onsat -g rqm 队列信息 维护 ER 使用的消息队列(SENDQ、CNTRLQ、ACKQ、SYNCQ、RECVQ)


这个命令查看三个重要的逻辑日志位置,从而判断 ER 的表现。这些位置由逻辑日志惟一 ID 和逻辑日志位置指定。这些位置是:

  • 当前 ID / 位置 —— 应用程序线程插入新的逻辑日志记录的位置
  • 搜索 ID / 位置 —— ER 当前在逻辑日志中正在 “搜索” 的位置
  • 重放 ID / 位置 —— 如果暂停的话,ER 重新启动 “搜索” 的位置


                    
$ onstat -g ddr

IBM Informix Dynamic Server Version 11.10.FC1     -- On-Line (Prim) -- Up 16 days 
18:50:41 -- 196608 Kbytes

DDR -- Running --  

# Event  Snoopy   Snoopy   Replay   Replay   Current  Current 
Buffers   ID      Position  ID      Position   ID     Position
528      11       643018   11       4f3070   11       644000  

Log Pages Snooped:
      From      From      Tossed
     Cache      Disk  (LBC full)
      5992       612           0

Total dynamic log requests: 0              

DDR events queue

Type   TX id    Partnum  Row id  
        

正如在 onstat -g ddr 的输出中看到的,重放位置和搜索位置应该正在向前推进。如果重放位置没有前进,这说明发送队列已满,或者远程服务器关闭。如果搜索位置没有移动,那么可能是 ddr_snoopy 线程出了问题。

如果数据库服务器将要覆盖 ER 还没有处理的逻辑日志,ER 就会进入 DDRBLOCK 模式。在服务器处于 DDRBLOCK 模式期间,尽管用户事务会被阻塞,但是 ER 活动可以继续执行。在此期间,ER 尝试处理事务,从而将重放位置向前推进,避免日志文件被用光。

这个命令指出(服务器已知)站点是否连接,并显示发送和接收的字节数。这有助于找到暂停的站点(相对于其他活动站点)。在下面清单 53 中的输出示例中可以看到,站点 g_90s 处于 SUSPEND 状态。这意味着有人在这个站点上运行了 cdr suspend server。如果该服务器离线,这个输出中就不会列出它。(参见 cdr list server 提供的信息。)



                    
$ onstat -g nif

IBM Informix Dynamic Server Version 11.10.FC1     -- On-Line (Prim) -- Up 16 days 
20:17:51 -- 196608 Kbytes

NIF anchor Block: fe0a678
	nifGState       	RUN
	   RetryTimeout 	300

CDR connections:
 Id    Name               State               Version       Sent   Received
---------------------------------------------------------------------------
2000 g_00s                RUN                       9       5559         18
  90 g_90s                RUN,SUSPEND               9       5562         17
        

有时候,在这个输出中可能看到 “BLOCK” 状态。阻塞状态意味着这个站点无法处理更多的信息,并请求不要再向它发送更多的数据。这个状态应该是临时的,常常只会持续几分钟。如果 BLOCK 状态持续存在,那么要进一步检查这个站点。

这个命令输出五个 ER 队列的相关信息:SENDQ、CNTRLQ、ACKQ、SYNCQ、RECVQ。每个队列有自己的选项,还可以使用以下选项之一查看所有队列的信息:FULL、BRIEF、VERBOSE。清单 54 中的输出示例显示一个队列的所有信息。输出分为五个部分:

  1. 队列的活动和摘要信息
  2. 队列的进度表
  3. 队列中与目标服务器相关的条目的服务器和副本细节
  4. 队列中第一个和最后一个事务的细节
  5. 正在处理这个队列的线程的细节


                    
$ onstat -g rqm sendq

IBM Informix Dynamic Server Version 11.10.FC1     -- On-Line (Prim) -- Up 16 days 
20:46:32 -- 196608 Kbytes

CDR Reliable Queue Manager (RQM) Statistics:

RQM Statistics for Queue (0xfdb1028) trg_send
 Transaction Spool Name: trg_send_stxn
 Insert Stamp: 6161/0
 Flags: SEND_Q, SPOOLED, PROGRESS_TABLE, NEED_ACK
 Txns in queue:             4003
 Log Events in queue:       0
 Txns in memory:            4003
 Txns in spool only:        0
 Txns spooled:              4001
 Unspooled bytes:           210
 Size of Data in queue:     849555  Bytes
 Real memory in use:        849555  Bytes
 Pending Txn Buffers:       0
 Pending Txn Data:          0 Bytes
 Max Real memory data used: 849555 (1843200) Bytes
 Max Real memory hdrs used  1206340 (1843200) Bytes
 Total data queued:         1188006  Bytes
 Total Txns queued:         6161
 Total Txns spooled:        4001
 Total Txns restored:       0
 Total Txns recovered:      0
 Spool Rows read:           0
 Total Txns deleted:        2158
 Total Txns duplicated:     0
 Total Txn Lookups:         29232

 Progress Table:
	Progress Table is Stable
		On-disk table name............:		spttrg_send
		Flush interval (time).........:		30
		Time of last flush............:		1181403392
		Flush interval (serial number):		1000
		Serial number of last flush...:		5
		Current serial number.........:		5

Server    Group Bytes Queued      Acked	    		    Sent
------------------------------------------------------------------------------
  2000 0x500001                  0 50/b/4e8118/0            -        50/b/4e8118/0
    90 0x500001                  0 50/b/4e8118/0            -        50/b/4e8118/0



 Traverse handle (0x104f0028) for thread CDRGeval1 at Head_of_Q,  Flags: None
 Traverse handle (0x10483028) for thread CDRGeval0 at Head_of_Q,  Flags: None
 Traverse handle (0x10351028) for thread CDRGeval2 at Head_of_Q,  Flags: None
 Traverse handle (0x1034f028) for thread CDRACK_0 at Head_of_Q,  Flags: None
 Traverse handle (0x1048c028) for thread CDRACK_1 at Head_of_Q,  Flags: None
 Traverse handle (0x10288028) for thread CDRNrA90 at Head_of_Q,  Flags: None
 Traverse handle (0xfe60028) for thread CDRNsA2000 at Head_of_Q,  Flags: None
 Traverse handle (0x102b9028) for thread CDRNrA2000 at Head_of_Q,  Flags: None
        







IBM Informix Dynamic Server Enterprise Replication Guide 中详细描述了为 ER 添加的所有 SMI(sysmaster 数据库)表。这些 SMI 表是基于 syscdr 数据库的视图,而且可能将几个表组合在一个视图中。在 $INFORMIXDIR/etc/syscdr.sql 中可以找到这些表的模式,在 $INFORMIXDIR/etc/syscdrview.sql 中可以找到在 sysmaster 中创建的视图。

如果 onstat 命令和 cdr 命令的输出之间出现差异,那么可能需要查看这些表。onstat 实用程序总是从共享内存读取信息,而 cdr 实用程序读取全局编目(也称为 syscdr 数据库)。



表名 描述
hostdef_tab Enterprise Replication 服务器信息(就像 SQLHOSTS)
protodef_tab 服务器协议信息
servdef_tab 服务器定义
repdef_tab 副本定义
triggerdef_tab ER 触发器定义
triggercol_tab ER 触发器列
partdef_tab 副本的参与服务器
mastered_replicates_tab 主副本描述
mastered_syscolumns_tab 主副本列
mastered_sysxtdtypes_tab 主扩展类型
mastered_sysattr_tab 扩展类型的属性
rsncjobdef_tab resync 作业定义表
rsncjobdeps resync 作业依赖项
rsncprocnames_tab Resync 过程名
delrepl 删除的副本表
replsetdef_tab 副本集定义
replsetpartdef 副本集中的副本
servroute 服务器路由表
cdr_errors 错误日志
gcversion 全局编目版本
swaploginfo 交换日志位置表
shadow_event_info 影子副本事件表
replaytab 重放位置表
recvcntldup 接收控制消息重复探测
cdrstatedef_tab CDR 编目状态
deltabdef_tab 活跃删除表定义
cdrviotabdef_tab CDR 违例表定义
deltabrep 删除表到副本的映射
freqdef 基于时间的复制频率信息
rsncrowstats 跟踪 resync 作业的行计数
replevents 副本暂停/继续运行事件
cdr_pcpt PostCommit 触发器进度表
cdrddlpt PostCommit DDL 日志进度表
阅读(1511) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~