线性日志记录
如果您要重新启动恢复和介质或转发恢复(通过重播日志内容重新创建已丢失或已损坏的数据),则使用线性日志记录。
线性日志记录在连续的文件序列中保存日志数据。它不重用空间,因此,您可以总是从创建队列管理器的时间中检索任何已记录的记录。
由于磁盘空间是有限的,您可能需要考虑某种形式的归档。管理任务管理日志的磁盘空间,必要时重用或扩展现有的空间。
与线性日志记录一起使用的日志文件数可以非常大,这取决于您的消息流和您的队列管理器寿命。但是,有许多文件是活动的。活动文件包含重新启动队列管理器所需的日志条目。活动日志文件数通常与配置文件中定义的主日志文件数相同。
控制日志文件是否是活动的关键事件是检查点。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 系统的最后一个备份。