MySQL日志文件--InnoDB的在线REDO日志

在介绍InnoDB的在线REDO日志前,先介绍下InnoDB,InnoDB是mysql下的一个存储引擎,MYSQL下可选的存储引擎还有MyISAM,MEMORY,EXAMPLE,NDB Cluster,ARCHIVE,CSV,BLACKHOLE,FEDERATED。最常用的存储引擎就是InnoDB和MyISAM,InnoDB的特点是事务安全,而MyISAM主要用于管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。其他存储引擎在此不详细介绍。

那么InnoDB如何来实现其事务安全的呢?

其实主要是通过在线REDO日志和记录在表空间的UNDO信息来保证的。RED日志记录了InnoDB所做的所有物理变更和事务信息,通过REDO日志和UNDO信息,InnoDB保证了任何情况下的事务安全性。

MYSQL的REDO日志功能默认是打开的,要不它就无法保证其事务安全性。但是默认的文件是保存在其数据目录下,可以到.....\MySQL\MySQL Server 5.0\data该目录下,会发现以下2个文件:

ib_logfile0 ib_logfile1

这2个日志文件都是保存REDO日志的。只是无法用普通的文本编辑工具查看。

那么如何更改该日志的保存位置呢,方法如下:

1. 停止MYSQL服务。

2. 修改......\MySQL\MySQL Server 5.0\my.ini文件,在文件中加入一行:

innodb_log_group_home_dir="F:/mysql_log/mysql5.0/redo-log/redo.log";

3. 启动mysql服务。

发现启动不了,启动报错。具体错误不太明确,去查询错误日志文件,发现了如下错误:

091205 20:22:36 InnoDB: Operating system error number 123 in a file operation.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/mysql/en/Operating_System_error_codes.html
InnoDB: File name "F:\mysql_log\mysql5.0\redo-log\redo.log"\ib_logfile0

InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.

大致意思明白,报了123编号的错误,然后给了个路径让用户去查找看看是什么错误,于是打开

http://dev.mysql.com/doc/mysql/en/Operating_System_error_codes.html 页面,

终于在Windows System Error Codes 列表中到了编号123对应的错误描述

123ERROR_INVALID_NAMEThe file name, directory name, or volume label syntax is incorrect.

意思是文件名,目录名或卷标符号不正确,我仔细检查了下

innodb_log_group_home_dir="F:/mysql_log/mysql5.0/redo-log/redo.log";

发现这里多了分号,而以前的其他设置项都没有分号,肯定是这个错误,去掉分号,重新启动MSYQL。

却发现还是报错,继续查看错误日志发现,错误日志依旧,到底是什么原因呢?

我仔细看了下这句:
InnoDB: File name "F:\mysql_log\mysql5.0\redo-log\redo.log"\ib_logfile0

想起默认路径下的REDO日志的文件名都是自动生成的,所以决定去掉文件名尝试下,于是把my.ini中的配置修改成如下:

innodb_log_group_home_dir="F:/mysql_log/mysql5.0/redo-log/"

重新启动MYSQL,正常启动。

到F:/mysql_log/mysql5.0/redo-log目录下查看,果然生成了ib_logfile0 ib_logfile1 这两个文件,呵呵,高兴惨了。

真的发现通过错误日志定位问题还真快。

不过,为什么默认生成2个文件呢,可否生成多个文件呢,看看了书,发现有这么一个参数innodb_log_files_in_group可以配置的。

于是到my.ini下增加如下配置:

innodb_log_files_in_group=4

这里暂时设置成4个文件,然后重新启动MYSQL。

果然生成了如下4个文件

ib_logfile0 ib_logfile1 ib_logfile3 ib_logfile14

总结:mysql的日志功能学习了几天,终于了解完了,发现错误日志和慢查询日志目前来说对普通开发者来说比较有用,REDO日志对用户理解INNODB存储引擎的事务安全性处理比较有帮助,2进制日志则在大型系统性能优化,或海量数据处理有帮助,当然,如果是DBA,则这些日志都是要经常用到的。

最后附上MYSQL的操作系统错误代码编号,方便查阅,当然也可以直接到http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html 进行在线查阅。

  • Linux System Error Codes

    The following table provides a list of some common Linux system error codes. For a more complete list, see Linux source code.

    NumberMacroDescription
    1EPERMOperation not permitted
    2ENOENTNo such file or directory
    3ESRCHNo such process
    4EINTRInterrupted system call
    5EIOI/O error
    6ENXIONo such device or address
    7E2BIGArg list too long
    8ENOEXECExec format error
    9EBADFBad file number
    10ECHILDNo child processes
    11EAGAINTry again
    12ENOMEMOut of memory
    13EACCESPermission denied
    14EFAULTBad address
    15ENOTBLKBlock device required
    16EBUSYDevice or resource busy
    17EEXISTFile exists
    18EXDEVCross-device link
    19ENODEVNo such device
    20ENOTDIRNot a directory
    21EISDIRIs a directory
    22EINVALInvalid argument
    23ENFILEFile table overflow
    24EMFILEToo many open files
    25ENOTTYInappropriate ioctl for device
    26ETXTBSYText file busy
    27EFBIGFile too large
    28ENOSPCNo space left on device
    29ESPIPEIllegal seek
    30EROFSRead-only file system
    31EMLINKToo many links
  • Windows System Error Codes

    The following table provides a list of some common Windows system error codes. For a complete list, see the Microsoft Web site.

    NumberMacroDescription
    1ERROR_INVALID_FUNCTIONIncorrect function.
    2ERROR_FILE_NOT_FOUNDThe system cannot find the file specified.
    3ERROR_PATH_NOT_FOUNDThe system cannot find the path specified.
    4ERROR_TOO_MANY_OPEN_FILESThe system cannot open the file.
    5ERROR_ACCESS_DENIEDAccess is denied.
    6ERROR_INVALID_HANDLEThe handle is invalid.
    7ERROR_ARENA_TRASHEDThe storage control blocks were destroyed.
    8ERROR_NOT_ENOUGH_MEMORYNot enough storage is available to process this command.
    9ERROR_INVALID_BLOCKThe storage control block address is invalid.
    10ERROR_BAD_ENVIRONMENTThe environment is incorrect.
    11ERROR_BAD_FORMATAn attempt was made to load a program with an incorrect format.
    12ERROR_INVALID_ACCESSThe access code is invalid.
    13ERROR_INVALID_DATAThe data is invalid.
    14ERROR_OUTOFMEMORYNot enough storage is available to complete this operation.
    15ERROR_INVALID_DRIVEThe system cannot find the drive specified.
    16ERROR_CURRENT_DIRECTORYThe directory cannot be removed.
    17ERROR_NOT_SAME_DEVICEThe system cannot move the file to a different disk drive.
    18ERROR_NO_MORE_FILESThere are no more files.
    19ERROR_WRITE_PROTECTThe media is write protected.
    20ERROR_BAD_UNITThe system cannot find the device specified.
    21ERROR_NOT_READYThe device is not ready.
    22ERROR_BAD_COMMANDThe device does not recognize the command.
    23ERROR_CRCData error (cyclic redundancy check).
    24ERROR_BAD_LENGTHThe program issued a command but the command length is incorrect.
    25ERROR_SEEKThe drive cannot locate a specific area or track on the disk.
    26ERROR_NOT_DOS_DISKThe specified disk or diskette cannot be accessed.
    27ERROR_SECTOR_NOT_FOUNDThe drive cannot find the sector requested.
    28ERROR_OUT_OF_PAPERThe printer is out of paper.
    29ERROR_WRITE_FAULTThe system cannot write to the specified device.
    30ERROR_READ_FAULTThe system cannot read from the specified device.
    31ERROR_GEN_FAILUREA device attached to the system is not functioning.
    32ERROR_SHARING_VIOLATIONThe process cannot access the file because it is being used by another process.
    33ERROR_LOCK_VIOLATIONThe process cannot access the file because another process has locked a portion of the file.
    34ERROR_WRONG_DISKThe wrong diskette is in the drive. Insert %2 (Volume Serial Number: %3) into drive %1.
    36ERROR_SHARING_BUFFER_EXCEEDEDToo many files opened for sharing.
    38ERROR_HANDLE_EOFReached the end of the file.
    39ERROR_HANDLE_DISK_FULLThe disk is full.
    87ERROR_INVALID_PARAMETERThe parameter is incorrect.
    112ERROR_DISK_FULLThe disk is full.
    123ERROR_INVALID_NAMEThe file name, directory name, or volume label syntax is incorrect.
    1450ERROR_NO_SYSTEM_RESOURCESInsufficient system resources exist to complete the requested service
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值