科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件 WebSphere MQ v6 日志原理

WebSphere MQ v6 日志原理

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

MQ把所有由队列管理器控制的数据的重要更改到日志中。这包括创建和删除对象(除了通道)、持久消息更新、

作者:徐建明 来源:CSDN 2008年1月9日

关键字: 原理 日志 WEBSPHERE Windows

  • 评论
  • 分享微博
  • 分享邮件
MQ把所有由队列管理器控制的数据的重要更改到日志中。这包括创建和删除对象(除了通道)、持久消息更新、事务状态、更改对象属性以及通道活动。通过以下操作,日志包含恢复所有消息队列更新所需的信息:
1、保留队列管理器更改的记录
2、保留重新启动进程所使用的队列更新的记录
3、能够在硬件和软件发生故障后重新恢复数据
日志是什么?
WebSphere MQ 日志包含两个组件:
1. 日志数据的一个或多个文件
2. 日志控制文件
存在包含要记录的数据的许多日志文件。您可以定义数量和大小,或者采用三个系统缺省文件。
在 WebSphere MQ Windows 版中,三个文件都缺省为 1 MB。在 WebSphere MQ UNIX 中,三个文件都缺省为 4  MB。
创建队列管理器时,您定义的日志文件数是已分配的主日志文件数。如果不指定数,则使用缺省值。
在 WebSphere MQ Windows 版中,如果未更改日志路径,则在此目录中创建日志文件:
C:\Program Files\IBM\WebSphere MQ\log\<QMgrName>
在 WebSphere MQ UNIX 中,如果未更改日志路径,则在此目录中创建日志文件:
/var/mqm/log/QmName
WebSphere MQ 以这些主日志文件开始,但是日志填满了,则会分配次日志文件。它会动态完成此操作,并在发出日志空间减少的要求时除去它们。缺省情况下,最多可以分配两个次日志文件。
日志控制文件:
1、日志控制文件包含监控日志文件的使用所需的信息,如它们的大小和位置、下一个可用文件的名称等等。
note:确保启动队列管理器时创建的日志足够大,能够容纳应用程序要处理的消息的大小和量。您可能需要更改缺省日志数和大小以满足您的要求.
确定队列管理器应该使用循环还是线性日志记录后,您需要估计该队列管理器需要的日志大小。 日志大小是由以下日志配置参数确定的:
 LogFilePages
 4K 页面的单元中每个主和次日志文件的大小
 LogPrimaryFiles
 预分配的主日志文件数
 LogSecondaryFiles
 可创建的次日志文件数(主日志文件满时使用)
显示队列管理器为各种日志记录的数据量。大多数队列管理器操作需要最小量的日志空间。但是当持久消息放入队列时,所有消息数据必须写入日志,使它能够恢复此消息。通常,日志大小取决于队列管理器需要处理的持久消息的数量和大小。
操作  大小
放入持久消息  750 字节 + 消息长度
 如果是大消息,则分隔成 15700 字节的段,每个段可以有 300 字节的开销。
获取消息  260 字节
同步点,提交  750 字节
同步点,回滚  1000 字节 + 12 字节(要回滚的每个获取或放入)
创建对象  1500 字节
删除对象  300 字节
改变属性  1024 字节
记录介质映象  800 字节 + 映象
 映象分隔成 260 000 字节的段,每个段有 300 字节开销。
检查点  750 字节 + 200 字节(每个活动的工作单元)
 可以为任何未提交的放入或取出(由于性能原因而进行了缓存)记录其它数据。
注:
1. 队列管理器每次启动时,您可以更改主和次日志文件数。
2. 您无法更改日志文件大小;必须在创建队列管理器前确定它。
3. 主日志文件的数量和日志文件大小确定创建队列管理器时预分配的日志空间的量。把空间组织成小数量的大日志文件而不是大数量的小日志文件。
4. 主和次日志文件的总量不能超过长期运行事务的中的 63,它限制了队列管理器重新启动恢复可用的日志空间量。队列管理器用于介质恢复所需的日志空间量不共享此极限。
5. 使用循环日志记录时,队列管理器重用主日志空间。这意味着队列管理器的日志可以比您估计的队列管理器需要记录的数据量要小。日志文件满时,队列管理器将分配一个次日志文件(最多到极限值),并且序列中的下一个主日志文件不可用。
6. 主日志文件可用于检查点期间的重用。由于日志空间量的减少,因此使用检查点前,队列管理器会考虑主和次日志空间。
如果您不定义比次日志文件更多的主日志文件,则队列管理器在采用检查点前可以分配次日志文件。 这使得主日志文件可以重用。 
日志记录类型
在 WebSphere MQ 中,日志记录所要求的文件数取决于文件大小、您接收到的消息数和消息长度。有两种方法维护队列管理器活动的记录:循环日志记录和线性日志记录。
循环日志记录
如果您所要的只是重新启动恢复,则使用循环日志记录,使用日志回滚系统停止时正在进行的事务。
循环日志在日志文件环中保留所有重新启动数据。日志记录填充该环中的第一个文件,然后移动到下一个文件,依次类推,直到所有文件都满为止。然后它回到环中的第一个文件并再次开始日志记录。只要产品在使用中,就会一直继续下去,并且具有永远不会用完日志文件的优点。
WebSphere MQ 保留不丢失数据而重新启动队列管理器所需的日志条目,直到不再需要它们以确保队列管理器数据的恢复为止。
线性日志记录
如果您要重新启动恢复和介质或转发恢复(通过重播日志内容重新创建已丢失或已损坏的数据),则使用线性日志记录。
线性日志记录在连续的文件序列中保存日志数据。它不重用空间,因此,您可以总是从创建队列管理器的时间中检索任何已记录的记录。
由于磁盘空间是有限的,您可能需要考虑某种形式的归档。管理任务管理日志的磁盘空间,必要时重用或扩展现有的空间。
与线性日志记录一起使用的日志文件数可以非常大,这取决于您的消息流和您的队列管理器寿命。但是,有许多文件是活动的。活动文件包含重新启动队列管理器所需的日志条目。活动日志文件数通常与配置文件中定义的主日志文件数相同。
控制日志文件是否是活动的关键事件是检查点。WebSphere MQ 检查点是一组日志记录,包含启用队列管理器成功重新启动的信息。重新启动队列管理器不需要任何先前记录的信息,因此可以称为非活动的。
您必须确定何时不再需要非活动的日志文件。如果您的操作对它们不感兴趣了,则可以压缩或者删除它们。
如果新检查点记录到次日志文件中,或者以后记录到主日志文件中,则第一个文件成为非活动的,并且新的主文件格式化并添加到主池的结束部分, 恢复记录可用的主文件数。在这种方法中,主日志文件池可以看作是日志文件的扩展列表中的当前文件集。它还是根据您操作要求管理非活动文件的管理任务。
尽管次日志文件是为线性日志定义的,在正常操作中不使用它们。如果发生此情况(可能由于事务的寿命长所致),不可能从活动池中释放文件,因为,它可能仍需要重新启动,次文件格式化并添加到活动日志文件池中。
如果可用次文件数用完了,需要日志活动的大多数进一步操作的请求会被拒绝,并带有返回到应用程序的 MQRC_RESOURCE_PROBLEM 返回码。
两种类型的日志记录都可以应付意外的断电(假设没有硬件故障)。
队列管理器回滚消耗太多日志空间的事务。用此方法回滚其事务的应用程序无法执行后继的 MQPUT 或 MQGET 操作,这两个操作在相同事务下指定同步点。在此状态的同步点下尝试放入或取出消息返回 MQRC_BACKED_OUT。接着,此应用程序可以发出 MQCMIT,它返回 MQRC_BACKED_OUT 或 MQBACK,并启动一个新事务。已回滚消耗了太多的日志空间的事务,释放它的日志空间,并且队列管理器继续正常操作。
如果填充日志,则发出 AMQ7463 消息。另外,如果由于长期运行事务已保护要释放的空间而填充日志,则发出消息 AMQ7465。
最后,如果记录写入日志比异步内务处理进程处理它们的速度要快,则发出消息 AMQ7466。如果您看到此消息,则增加日志文件数或减少队列管理器要处理的数据量。
磁盘满时会发生什么
队列管理器日志记录组件可以应付磁盘满和日志文件满。如果包含日志的磁盘满了,则队列管理器发出 AMQ6708 消息,并产生一条错误记录。
日志文件是以其最大大小创建的,而不是当日志记录写入它们时再扩展。这意味着仅当创建新文件时 WebSphere MQ 可以用完磁盘空间;在把记录编写到日志时无法用完磁盘空间。WebSphere MQ 总会知道现有的日志文件中有多少可用的空间,并且管理这些文件中的空间。
如果您填充包含这些日志文件的驱动器,则可能会释放一些磁盘空间。如果您使用线性日志,则在此日志目录中可能有一些非活动的日志文件,并且可以把这些文件复制到另一个驱动器或设备。如果您仍用完了磁盘空间,则检查队列管理器配置文件中的日志配置是否正确。您可能可以减少主或次日志文件数,以使日志不会占用过多的可用空间。您无法改变现有队列管理器的日志文件大小。队列管理器假设所有的日志文件大小都相同。
管理日志文件
如果您使用循环日志记录,则确保配置系统时有足够的空间以保存这些日志文件(请参阅"WebSphere MQ 的日志缺省"和"队列管理器日志")。日志使用的磁盘空间量(包括要创建的次文件的空间(如果要求))不会增加到超出已配置的大小。
如果您使用线性日志,则记录数据时连续添加日志文件,并且使用的磁盘空间量随着时间而增加。如果要记录的数据速率高,则新日志文件会快速消耗磁盘空间。
经过一段时间,重新启动队列管理器或执行任何受损对象的介质恢复时就不再需要线性记录的这些旧日志文件。队列管理器定期发出消息对,表明需要哪些日志文件:
    * 消息 AMQ7467 给出了重新启动队列管理器所需的最旧的日志文件名。队列管理器重新启动期间,此日志文件和所有较新的日志文件必须是可用的。
    * 消息 AMQ7468 给出了介质恢复所需的最旧的日志文件名。
任何比这些文件旧的日志文件不需要联机。您可以把它们复制到一个归档介质(如用于灾难恢复的磁带),并把它们从活动日志目录除去。任何介质恢复(不是重新启动)所需的日志文件也可卸载成某个压缩文档。
如果找不到任何所需的日志文件,则发出 AMQ6767 操作员消息。使队列管理器能够使用日志文件和所有后继的日志文件,并重试此操作。
注:
    执行介质恢复时,日志文件目录中的所有必需的日志文件必需在此时是可用的。确保使用任何对象的常规介质映象,您可能希望用它来进行恢复,以避免保持所有必需的日志文件而用完磁盘空间。
运行 rcdmqimg 命令时,也可能发出消息 AMQ7467 和 AMQ7468。有关此命令的更多信息,请参阅rcdmqimg(记录介质映象)。
日志文件位置
选择日志文件的位置时,记住,如果由于缺少磁盘空间而 WebSphere MQ 无法格式化新日志,则该操作会受到严重影响。
如果您使用循环日志,则确保驱动器上至少有用于已配置的主日志文件的足够空间。至少还为一个次日志文件保留空间,如果日志增长则,会需要它。
如果您使用线性日志,则允许相当的更多空间;数据记录时,会持续增加日志消耗的空间。
最好是把日志文件和队列管理器数据放在不同的磁盘驱动器中。这对性能有益。也有可以把日志文件放到镜像排列中的多个磁盘驱动器中。这保护包含此日志的驱动器以免发生故障。如果没有镜像,会强制您返回到您的 WebSphere MQ 系统的最后一个备份。

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章