文件类型 | 缺省名 | 文件内容 |
进程id | hostname.pid | 服务器进程id |
错误日志 | hostname.err | 启动和关闭事件和错误状态 |
常规日志 | hostname.log | 连接/断开事件和查询信息 |
更新日志 | hostname.nnn | 修改表的内容或结构的所有查询的文本 |
服务器在启动时将它的进程id(pid )写入pid 文件,并在关闭时删除该文件。pid 文件是一种方法,用这种方法,其他的进程可以找到该服务器。例如,如果您在系统关闭时运行mysql.server 脚本来关闭mysql服务器,则该脚本将检查pid 文件以确定它需要哪个进程来发送一个终止信号。
错误日志由safe_mysqld 产生,作为服务器标准错误输出结果的重定向,它包含服务器写入stderr 的所有消息。这意味着仅当通过调用safe_mysqld 启动服务器时,错误日志才存在(总之,这是启动服务器的首选方法,因为,如果由于一个错误使错误日志存在,则
s a f e _ mysqld将重新启动服务器)
常规日志和更新日志是可选的,可以用--log 和--log-update 服务器选项开启需要的日志类型。
常规进程提供有关服务器运作的常规信息:谁从哪里进行了连接,以及他们发布了什么查询。更新日志也提供查询信息,但仅仅是修改过的数据库内容的查询信息。更新日志的内容是一些sql 语句,这些语句可以通过将它们输入到mysql客户机程序来运行。如果出现崩
溃且必须转到备份文件时,更新日志将是有用的,因为您能够通过将更新日志输入到服务器来重复这些自崩溃以来所完成的更新操作。这将使得数据库恢复到崩溃发生时所处的状态上。
下面是一个实例,它是作为一个短客户机会话的结果出现在常规日志中的信息中的,这个会话在test 数据库中创建一个表,并插入一行到该表中,然后删除该表:
常规日志包含日期和时间、服务器线程id、事件类型以及特定事件信息的列。
同一个会话出现在如下的更新日志中:
对于更新日志,日志的扩展格式是可用的,即使是用--log - long - format 选项。扩展的日志提供有关谁何时发布查询的信息。当然,这将使用更多的磁盘空间,但是,如果您不将更新日志的内容与常规日志中的连接事件相联系就想知道谁正在做什么的话,扩展日志或许是可用的。
对于刚才显示出的会话,扩展日志将产生下列信息:
确保日志文件的安全且不被用户任意读取是个好注意。常规日志和更新日志都包含有诸如口令这样的敏感信息,这是因为它们包含了查询的文本。下面是您不想让任何人都能读取的日志项,因为它显示了root 用户的口令:
有关检查可设置数据目录许可权的信息,请参阅第12 章。数据目录安全的简短指令由下列命令组成:
% chmod 700 datadir
以拥有该数据目录的unix 用户身份来运行此命令。还要确保服务器以该用户身份运行,否则此命令不仅将其他用户排斥在该数据目录之外(您想要的),还将阻止服务器访问您的数据库(您不要的)。
状态文件出现在数据目录的最高级,就像数据库目录一样,因此您可能会想到那些文件的名字是否会相互混淆或者被误认为是数据库名(例如,当服务器正在执行s h o w database 语句时)。答案是:不会的。状态和日志信息存储在文件中,而数据库是目录,因此可执行程序可以将它们与一个简单的stat() 调用相区别(是服务器告诉它们怎样区分的)。如果您正在监视数据目录,则可以通过使用ls -l 将状态文件从数据库目录中区分开来,并且检查该模式信息的第一个字符以查看它是‘ -’还是‘d’:
您还可以通过查看名字而简单地告之:所有状态文件名都包含一个句点,但是数据库目录名没有句点(句点不是数据库名的合法字符)。
有关日志文件维护和循环技术的信息,请参阅第11章的内容。
新闻热点
疑难解答