- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
informix 逻辑日志和物理日志
informix 逻辑日志和物理日志
informix数据库中物理日志和逻辑日志两种非常重要的磁盘构件。
1.物理日志
物理日志(physical log)由一片连续的磁盘空间。其主要目的是为系统进行快速恢复提供原始数据映像。
物理日志以页为单位进行分配和释放,它所存储的内容被称为before images(顾名思义,数据原来的面貌即修改前数据映像)。
当共享内存中的某个页要被修改之前(第一次被修改),系统先将其修改前数据映像(before images)放到物理日志中保存起来。
这样,在用户的整个操作完全成功以前,他所修改的所有数据页的修改前映像都被保存着,一旦出现问题,
系统可以根据物理日志中的before images进行快速恢复。需要注意的是,只在数据页第一次被修改以前其before image才会被保存,
在before image被写入以后和其被释放之前的这一段过程中,所有对该页进行的修改都不再写before image了。当用户写该页这个操作对应的逻辑日志被释放时,
其before image也就可以释放了。
2.逻辑日志
逻辑日志(logical logs)是由若干块独立的磁盘空间构成,每一块都是连续的磁盘空间。一个Informix Dynamic Server系统的逻辑日志块数至少要有三块,
最大数据可以由管理员配置(不能超过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 ,
文档评论(0)