2013年(350)
分类: Mysql/postgreSQL
2013-04-11 15:55:46
错误日志,顾名思义,当然就是记录错误信息的日志,不过本小节中要提到的错误日志文件,并不仅仅是记录错误信息,MySQL服务进程启动/关闭的信息也会被记录进来,也不是说什么错误都会记录,只有服务进程运行过程中发生的关键(critical)错误会被记录,另外mysqld进程发现某些表需要自动检查或修复的话,也会抛出相关信息到该日志文件。
提示:
MySQL中的error log日志文件,其实功能跟ORACLE中的alert极为相似,不过由名称也看得出MySQL果然还是嫩了点儿,error logs中即不全是error信息,也并非所有error都被记入log,这名称就有点儿名不副实了。还是ORACLE高明--alert,就是提示你要注意,咋理解都没毛病。
在某些操作系统上运行的mysql崩溃时,会将堆栈的跟踪信息(stack trace)抛出到错误日志文件中,这些跟踪信息比较有利于故障排查。
启用mysqld时附加--log-error参数(或配置log-error系统环境变量),指定错误日志的路径及文件名,如不指定的话,默认文件名为[host_name].err,保存在mysql的文件夹下。执行FLUSH LOGS命令后,mysql会将当前错误日志文件附加-old保存,而且创建一个新的空错误日志文件(仅限指定--log-error的情况下会自动创建新文件)。
提示:
环境中,事件和错误消息也会被写入windows的事件日志中,以应用程序的形式保存,并可能被标记为警告(Warning)或注意(Note),不过信息类的消息不会写入事件日志。
--log-warnings参数(或log-warnings系统环境变量)用来控制警告信息是否记录,默认值为1即启用,指定为0时表示禁用。如果指定该参数值大于1,则连接失败的消息也会写入错误日志。
使用mysqld_safe命令启动mysqld,mysqld_safe会将错误消息写到日志文件或者系统日志,在5.1.20版本之前,mysqld_safe的操作记录到文件;从5.1.20版本开始,mysqld_safe提供了两个新增错误日志选项:--syslog和--skip-syslog。从5.1.21版本开始,默认的不记录日志选项为--skip-syslog,该选项兼容5.1.20版本之前的错误日志行为。要明确指定输出的错误日志文件,就通过mysqld_safe启动服务时附加--log-error[=file_name]参数,如果要使用syslog,则指定--syslog参数。
对于记录到syslog的消息,来自mysqld_safe和mysqld的消息会分别打上"mysqld_safe"或"mysqld"的标签,从5.1.21版本开始,还可以通过--syslog-tag=[tag]的方式指定标签的名称,修改后实际记录的标签形式会变成"mysql_safe-[tag]"和"mysqld-[tag]"。
如何是使用mysqld_safe命令启动mysqld进程,并且mysqld意外崩溃,则mysqld_safe将尝试重新启动mysqld进程,并且向错误日志中记录"restarted mysqld"信息。