informix的逻辑日志和物理日志分析

informix的逻辑⽇志和物理⽇志分析
informix数据库中物理⽇志和逻辑⽇志两种⾮常重要的磁盘构件。
1.物理⽇志
物理⽇志(physicallog)由⼀⽚连续的磁盘空间。其主要⽬的是为系统进⾏快速恢复提供原始数据映像。物理⽇志以页为单位进⾏分配和释放,它所存储的内容被称为beforep_w_picpaths(顾名思义,数据原来的⾯貌即修改前数据映像)。当共享内存中的某个页要被修改之前(第⼀次被修改),系统先将其修改前数据映像(beforep_w_picpaths)放到物理⽇志中保存起来。这样,在⽤户的整个操作完全成功以前,他所修改的所有数据页的修改前映像都被保存着,⼀旦出现问题,系统可以根据物理⽇志中的beforep_w_picpaths进⾏快速恢复。需要注意的是,只在数据页第⼀次被修改以前其before p_w_picpath才会被保存,在beforep_w_picpath被写⼊以后和其被释放之前的这⼀段过程中,所有对该页进⾏的修改都不再写beforep_w_picpath了。当⽤户写该页这个操作对应的逻辑⽇志被释放时,其before
p_w_picpath也就可以释放了。
2.逻辑⽇志
逻辑⽇志(logicallogs)是由若⼲块独⽴的磁盘空间构成,每⼀块都是连续的磁盘空间。⼀个Informix DynamicServer系统的逻辑⽇志块数⾄少要有三块,最⼤数据可以由管理员配置(不能超过32767块)。
记逻辑⽇志的⽬的是将对系统的每个操作、每个修改都保存起来,以便系统出现问题的时候可以根据其内容进⾏重做(REDO)或事务不能继续进⾏下去的时候进⾏回滚(UNDO)。逻辑⽇志记录的内容主要包括事务的每⼀步操作机器对系统产⽣的影响、DDL语句和检查点(checkpoint)记录。
3.物理⽇志由系统维护,通常⽆需维护。
4.逻辑⽇志的维护。
逻辑⽇志的备份⽅式
先说⼀下备份级别,也同样⽤informix的概念来理解
备份级别分为 0, 1, 2
0:完全备份
1:⾃上⼀次完全备份,进⾏增量
2:⾃上⼀次增量进⾏增量
备份⽅式有两种:⾃动、连续
所谓⾃动并不是想像中的⾃动,它运⾏⼀次后会结束,这样就要有脚本或⼈⼯定时去备份逻辑⽇志,不然会被填满。
可以⽤命令:ontape -a 来切换到⾃动备份
⽽连续才是想像中⾃动的意思,他不会停⽌,只要⽇志满了就会去备份。通常如果不想去费⼼思管理逻辑⽇志,可以设置为连续。
可以⽤命令:ontape -c 来切换到连续备份
informix中逻辑⽇志的⼯作流程
informix逻辑⽇志⼀般有多个。建⽴多个⽇志的原因我想是考虑到效率。当多个进程需要记录⽇志时,可以同时向多个⽇志⽂件中写。
在informix配置⽂件中logfiles指定逻辑⽇志⽂件的个数(最少为3个,最⼤为X个)。logsize指定每个逻辑
⽇志⽂件的⼤⼩。(总逻辑⽇志空间为:logsize*logfiles)这⾥的配置只在informix实例初始化时才起作⽤,即oninit -i。当然在使⽤过程中如果有需求要改变逻辑⽇志的个数或⼤⼩不能通过oninit -i来实现。onparams可以对逻辑⽇志⽂件进⾏动态的添加,更改⼤⼩,删除,移动等操作。
buffer中逻辑⽇志什么时候写⼊⽇志⽂件
上⾯,说到我们会建⽴多个⽇志⽂件⽤来记录逻辑⽇志,但并不是每产⽣⼀次操作记录就向⽇志⽂件中写,那样io太多。⽽是在记录在buffer中。当达到⼀定限度时再写⼊⽇志⽂件,那么什么时候buffer会写⼊⽂件中呢?
1. buffer满了 ⽤来记录逻辑⽇志的buffer的⼤⼩由onconfig⽂件中的logbuff决定,当buffer写满后会写⼊⽇志⽂件。这⼉可以看到设置合适的 logbuff⼤⼩还是对效果有影响的。如果过⼩,buffer很快被写满,就要做⼀次io,写⼊⽇志⽂件。这样会造成过多的IO。如果过⼤,常时间buffer中的数据不写⼊⽇志⽂件,如果有意外发⽣,造成较⼤的不可恢复。同时点⽤太多内存有可能影响整体性能。
逻辑⽇志写满了怎么办?
当逻辑⽇志写满后,数据库就会被塞住,⽽不能进⾏任何操作。所以不能让逻辑⽇志写满。那么就要保证逻辑⽇志⽂件可以循环使⽤。
下⾯是⼀种⽅案:当某逻辑⽇志⽂件写满后,将逻辑⽇志进⾏备份,然后再把这个⽇志⽂件设备为可⽤。
informix也是这么做的,系统运⾏时,可以让⽇志⽂件写满后进⾏连续备份,这样就可以循环使⽤⽇志⽂件了。
那么备份到哪呢?在onconfig⽂件中,LTAPEDEV指定备份的磁带,我现在设置成/dev/null其实是不备份的,但让informix以为已经备份,以⾄系统可以向下正常运⾏。当然,如果我指定到备份设备,就可以备份了。
如果把备份设备指定到/dev/null ,那么备份⽅式将⾃动为连续备份。
如果把备份设备指到了具体的磁带机,那么可以⽤ontape -c来设置备份⽅式为连续备份
下⾯⼀段是关于⽇志状态的说明:
先对下⾯的⼀段进⾏⼀些说明,number⼀共到9说明有9个逻辑⽇志,size为12500说明⽣个逻辑⽇志⽂件⼤⼩10M。used当然是已经使⽤过了多少。
可以看到⼤部已经使⽤完。不⽤害怕,这是很正常的。可以看到%used为100%的flags为U-B U虽然说
明已经满了,但B却说明了已经备份过了,可以进⾏循环使⽤。如果当前使⽤的⽇志⽂件满了后,会⾃动切换到下⼀个U-B上。
第8个⽇志⽂件flags为U---C-L 说明这个是当前正在使⽤的⽇志⽂件。使⽤onmode-l可以切换到下⼀个⽇志⽂件,切换后再⽤onstat-l查看,可以看到第9个⽇志⽂件变为U---C状态,说明已经在使⽤下⼀个了,⽽它的%usered则为0。也验证了U-B状态会循环使⽤的说明。还有⼀点要注意,即使在当前使⽤的⽇志后⾯有没有满的⽇志,informix也不会跳过当前使⽤的⽇志去写⼊下⾯的⽇志⽂件,只有当前⽇志满了后才切换到下⼀个(或⽤onmode-l强制转到下⼀个)
address number flags uniqid begin size used %used
8352f680 1 U-B---- 11544 1061e7 12500 12500 100.00%
8352f69c 2 U-B---- 11545 1092bb 12500 12500 100.00%
8352f6b8 3 U-B---- 11546 10c38f 12500 12500 100.00%
8352f6d4 4 U-B---- 11547 10f463 12500 12500 100.00%
8352f6f0 5 U-B---- 11548 112537 12500 12500 100.00%
8352f70c 6 U-B---- 11549 11560b 12500 12500 100.00%
8352f728 7 U-B---- 11550 6135e6 12500 12500 100.00%
8352f744 8 U---C-L 11551 6166ba 12500 10616 84.93%
8352f760 9 U-B---- 11530 61978e 12500 12500 100.00%
逻辑⽇志⽂件的状态显⽰包括两个区域:
number:标识单个逻辑⽇志⽂件的logid。
flags:标明相应逻辑⽇志⽂件的状态。flags状态标志有七个位置,但仅第⼀,三,五,七位置
有标志值。
第⼀个位置上,可能出现A,F,U三个标志中的⼀个;
大数据日志分析第三个位置上,标志B可能出现也可能也可能不出现;
第五个位置上,可能为标志C也可能为空;
第七个位置上,可能是标志L也可能为空;
位置 标志 含义
1 A Added,新增加的逻辑⽇志⽂件,仅当建⽴⼀个(根dbspace的)0级archive
后才能使⽤。
1 F Free,该逻辑⽇志⽂件空闲并可以使⽤。
1 U Used,该逻辑⽇志⽂件正在使⽤⽽未释放,OnLine恢复时还需要该⽂件(回
滚⼀个事务或到上⼀个检查点记录)
3 B Backed-UP,该逻辑⽇志⽂件已备份。
5 C Current,该逻辑⽇志⽂件是当前正在填充的逻辑⽇志⽂件。
7 L Last,该逻辑⽇志⽂件包含有最近⼀次检查点记录,在新的检查点记录写⼊
另⼀个⽇志⽂件之前,该⽂件及后⾯的逻辑⽇志⽂件不能释放。
所有状态标志的可能组合
状态标志 逻辑⽇志⽂件的状态
A------ 上次0级archive以来新增加的逻辑⽇志⽂件,暂时不能使⽤
F------ 空闲
U------ 正在使⽤,还没有备份
U-B---- ⽇志已备份,恢复时还需要
U-B---L ⽇志已备份,包含上次检查点记录,恢复时还需要此⽂件
U---C-- 当前⽇志⽂件
U---C-L 当前⽇志⽂件,并包含上次检查点记录
长事务
先说⼀下引起长事务的原因,⼀个逻辑⽇志⽂件中包括⼀个没有结束的事务时,这个⽇志⽂件是不能
被备份的。如果⼀个事务特别长,那么就有可能把所有⽇志⽂件都写满。如果所有⽇志被写满是很⿇烦的。informix会控制当⽇志写⼊量达到⼀定程度时,就报告这个事务为长事务,然后进⾏回滚,以防⽌⽇志被写满。
这⼉就有两个⾼⽔位线的概念,在onconfig⽂件中HTXHWM 这是⼀个百分⽐,当已经使⽤⽇志量达到这个总⽇志量的这个百分⽐时,就报告长事务。开始回滚,期间别的操作还可以进⾏(写⼊⽇志),但当达到另⼀个⽔准线时LTXEHWMinformix会停⽌其它进程的操作,⽤所有精⼒进⾏回滚。(当达到这个⽔平时,如果再接受别的进程写⼊⽇志,有可能不能完成回滚就已经填满所有⽇志。回滚也是要写⼊⼤量⽇志的!)
上⾯就是长事务的原因。所以进⾏⽐较⼤的事务操作时,可以暂时切换到⽆⽇志状态。如果不能即时关闭⽇志记录,可以把⽇志⽂件⼤⼩加⼤,都有可能解决上⾯的问题。另外还有虽的⽅法,我还要去查看
注意:长⽇志是指发⽣在⼀个⽇志⽂件不能备份的情况下,所以增加⽇志⽂件个数并不管⽤,只有适当增加每个⽇志⽂件⼤⼩

本文发布于:2024-09-21 15:38:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/386816.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:逻辑   备份   可能   不能   记录   事务   操作   恢复
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议