首页 > 编程知识 正文

mysql数据库文件名后缀,数据库日志文件

时间:2023-05-05 09:04:08 阅读:47299 作者:314

日志文件类型

MySQL有几个不同的日志文件,有助于找到mysqld内部发生的事情。

日志文件

文件中写入的信息类型

错误日志

记录启动、运行或停止mysqld时出现的问题。

查询日志

记录已建立的客户端连接和执行的语句。

更新日志

记录更改数据的语句。 我不赞成使用这个日志。

二进制日志

记录更改数据的所有语句。 也用于复制。

慢日志

记录运行时间超过long_query_time秒或不使用索引的所有查询。

默认情况下,所有日志都是在mysqld数据目录中创建的。 更新日志后,可以强制mysqld关闭并重新打开日志文件。 或者,在某些情况下,也可以切换到新日志。 为的烤鸡欢呼并执行FLUSH LOGS语句,或者执行mysqladmin flush-logs或mysqladmin refresh时,会发生日志更新。

错误日志

错误日志文件包含启动和停止mysqld以及运行服务器时发生严重错误时的信息。

如果mysqld意外死亡,需要重新启动mysqld_safe,mysqld_safe会在错误日志中写入restarted mysqld消息。 如果mysqld意识到必须自动检查或修改表,则会在错误日志中写入一条消息。

在某些操作系统上,如果mysqld死了,错误日志中将包含堆栈跟踪信息。 跟踪信息可用于确定mysqld死亡的位置。

可以使用--log-error[=file_name]选项指定mysqld保存错误日志文件的位置。 如果未指定file_name值,mysqld将使用错误日志名称host_name.err将日志文件写入数据目录。 运行FLUSH LOGS时,错误日志用-old修改后缀,mysqld创建新的空日志文件。 如果未指定(--log-error )选项,则不会重命名。

如果未指定--log-error,或者使用(在Windows上)--console选项,错误将写入标准错误输出stderr。 通常,标准输出是你的终端。

通用查询日志

如果想知道mysqld内部发生了什么,必须使用--log[=file_name]或-l [file_name]选项启动。 如果未指定file_name的值,则缺省名称为host_name.log。 所有连接和语句都记录在日志文件中。 如果客户端出现错误,并且想要准确知道客户端发送给mysqld的语句,为的烤鸡欢呼可能会很有用。

mysqld按接收到的顺序将语句记录在查询日志中。 这可能与执行顺序不同。 这与更新日志和二进制日志不同,它是在查询运行之后,但在解除其中一个锁定之前记录日志。 查询日志中还包括所有语句,但二进制日志中不包括只查询数据的语句。

重新启动服务器并更新日志不会生成新的常规查询日志文件。 但是,更新可能会关闭,一般查询日志文件可能会重新打开。 在Unix上,以下命令允许您重命名文件并创建新文件:

壳牌mvHostname.logHostname-old.log

shell MySQL管理闪存- logs

hellcphostname-old.logto-backup-directory

壳牌RMHostname-old.log

低速查询日志

使用--log-slow-queries[=file_name]选项启动时,mysqld将写入包含所有运行时间都超过long_query_time秒的SQL语句的日志文件。 第一次锁定表的时间不视为执行时间。

如果未指定file_name的值,则缺省未主机名为-slow.log。 如果给出了文件名,但不是绝对路径名,则文件将写入数据目录。

语句执行并释放所有锁定后,它将记录在低速查询日志中。 记录顺序可以与执行顺序不同。

慢速查询日志可用于查找运行时间较长的查询,并可用于优化。 但是,很难检查又长又慢的查询日志。 为简便起见,可以使用mysqldumpslow命令获取日志中显示的查询摘要,并处理速度较慢的查询日志。

在MySQL 5.1的抛出查询日志中,不使用索引的抛出查询的记录方式与使用索引的查询相同。 要防止不使用索引的低速查询记录在低速查询日志中,请使用----log--short-format选项。

在MySQL 5.1中,可以使用--log-slow-admin-statements服务器选项将慢速管理语句(如优化表、分析表和alter表)写入慢速查询日志

在查询缓存中处理的查询不会添加到滚动查询日志中。 因为表中有零或一行,所以无法从索引中获益的查询也不会写入到滚动查询日志中。

二进制日志

二进制文件介绍

二进制日志是一种更高效的格式,其中包含更新日志中可用的所有信息,并以安全的事务方式提供。

二进制日志包含所有更新的数据或可能已更新的数据。 例如,没有匹配的数据

行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。

备注:二进制日志已经代替了老的更新日志,更新日志在MySQL 5.1中不再使用。

二进制文件的行为

二进制日志还包含关于每个更新数据库的语句的执行时间信息。它不包含没有修改任何数据的语句。如果你想要记录所有语句(例如,为了识别有问题的查询),你应使用一般查询日志。

二进制日志的主要目的是在恢复使能够最大可能地更新数据库,因为二进制日志包含备份后进行的所有更新。

二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。

运行服务器时若启用二进制日志则性能大约慢1%。但是,二进制日志的好处,即用于恢复并允许设置复制超过了这个小小的性能损失。

二进制文件的文件路径

当用--log-drdgs[=file_name]选项启动时,mysqld写入包含所有更新数据的SQL命令的日志文件。如果未给出file_name值, 默认名为-drdgs后面所跟的主机名。如果给出了文件名,但没有包含路径,则文件被写入数据目录。建议指定一个文件名.

如果你在日志名中提供了扩展名(例如,--log-drdgs=file_name.extension),则扩展名被悄悄除掉并忽略。

mysqld在每个二进制日志名后面添加一个数字扩展名。每次你启动服务器或刷新日志时该数字则增加。如果当前的日志大小达到max_drdgslog_size,还会自动创建新的二进制日志。如果你正使用大的事务,二进制日志还会超过max_drdgslog_size:事务全写入一个二进制日志中,绝对不要写入不同的二进制日志中。

为了能够知道还使用了哪个不同的二进制日志文件,mysqld还创建一个二进制日志索引文件,包含所有使用的二进制日志文件的文件名。默认情况下与二进制日志文件的文件名相同,扩展名为'.index'。你可以用--log-drdgs-index[=file_name]选项更改二进制日志索引文件的文件名。当mysqld在运行时,不应手动编辑该文件;如果这样做将会使mysqld变得混乱。

二进制日志选项

可以使用下面的mysqld选项来影响记录到二进制日志知的内容。又见选项后面的讨论。

·--drdgslog-do-db=db_name

告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,应将更新记录到二进制日志中。其它所有没有明显指定的数据库被忽略。如果使用该选项,你应确保只对当前的数据库进行更新。

对于CREATE DATABASE、ALTER DATABASE和DROP DATABASE语句,有一个例外,即通过操作的数据库来决定是否应记录语句,而不是用当前的数据库。

一个不能按照期望执行的例子:如果用drdgslog-do-db=sales启动服务器,并且执行USE prices; UPDATE sales.january SET amount=amount+1000;,该语句不写入二进制日志。

·--drdgslog-ignore-db=db_name

告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,不应将更新保存到二进制日志中。如果你使用该选项,你应确保只对当前的数据库进行更新。

一个不能按照你期望的执行的例子:如果服务器用drdgslog-ignore-db=sales启动,并且执行USE prices; UPDATE sales.january SET amount=amount+1000;,该语句不写入二进制日志。

类似于--drdgslog-do-db,对于CREATE DATABASE、ALTER DATABASE和DROP DATABASE语句,有一个例外,即通过操作的数据库来决定是否应记录语句,而不是用当前的数据库。

要想记录或忽视多个数据库,使用多个选项,为每个数据库指定相应的选项。

服务器根据下面的规则对选项进行评估,以便将更新记录到二进制日志中或忽视。请注意对于CREATE/ALTER/DROP DATABASE语句有一个例外。在这些情况下,根据以下规则,所创建、修改或删除的数据库将代替当前的数据库。

1.是否有drdgslog-do-db或drdgslog-ignore-db规则?

·没有:将语句写入二进制日志并退出。

·有:执行下一步。

2.有一些规则(drdgslog-do-db或drdgslog-ignore-db或二者都有)。当前有一个数据库(USE是否选择了数据库?)?

·没有:不要写入语句,并退出。

·有:执行下一步。

3.有当前的数据库。是否有drdgslog-do-db规则?

·有:当前的数据库是否匹配drdgslog-do-db规则?

o有:写入语句并退出。

o没有:不要写入语句,退出。

·No:执行下一步。

4.有一些drdgslog-ignore-db规则。当前的数据库是否匹配drdgslog-ignore-db规则?

·有:不要写入语句,并退出。

·没有:写入查询并退出。

例如,只用drdgslog-do-db=sales运行的服务器不将当前数据库不为sales的语句写入二进制日志(换句话说,drdgslog-do-db有时可以表示“忽视其它数据库”)。

如果你正进行复制,应确保没有从服务器在使用旧的二进制日志文件,方可删除它们。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。