mysql log file_MySQL Log Files -- Mysql日志文件

4.9 4.9 The MySQL Log Files

mysql提供几种不同功用的纪录档,以便于让你了解mysqld发生了什么问题。

1. The error log:纪录所有mysqld启动,执行和结束时发生的错误讯息。

2. The isam log:纪录所有更动ISAM资料表的动作。

3. The query log:纪录所有的连线资料以及执行的查询语法。

4. The update log:储存所有更动资料的指令。

5. The binary log: Stores all statements that changes something. Used also for replication

6. The slow log:纪录所有查询时间超过long_query_time或不使用索引的查询动作。

你可以在mysqld的资料目录中找到所有的纪录档。

4.9.2 The General Query Log

如果想知道mysqld里面发生了什么事的话,你就应该在启动mysqld时加上--log[=file]这个选项。这样一来,所有的连线及查询动作都会被写入纪录档中。 (预设档名为'hostname'.log)这个在网路程式的除错方面很有帮助。

纪录档中每笔资料写入的时机是当mysqld接收到该指令的时候,这有可能会跟sql指令执行的顺序不同。因此,本纪录档的写入时机和update log与binary log不同。

4.9.3 The Update Log

当你在执行mysqld时,如果有加上--log-update[=file_name]选项的话, mysqld会将所有关于更新资料的SQL commands写入纪录档中。在没有指定file_name的情况下,预设会用主机名称当作纪录档的档案名称。如果你指定的档案名称不包含完整路径的话,纪录档会放置在资料目录中。如果档案名称没有指定副档名的话, mysqld会以"file_name.###"作为纪录档的档名,其中###是阿拉伯数字,每当下列状况发生时,这个数字就会加一。

1.执行mysqladmin refresh

2.执行mysqladmin flush-logs

3.执行FLUSH LOGS sql指令

4.重新启动mysqld

update logging还有一项特点就是它只会纪录"真正"改变资料的动作。因此,带有where选项的updata或delete指令如果没有更动任何资料的话,这个动作就不会被写入纪录档。甚至在updata指令没有变更栏位值的情况下,该指令也不会被纪录下来。

update logging执行的时机是介于sql指令结束以及lock解开以前。这样可以确保所有的变动纪录是依照实际执行的顺序写入纪录档中。

你可以执行下列指令来用update log file更新资料库。 (假设你的update log files的档名格式为file_name.###)

shell> ls -1 -t -r file_name.[0-9]* | xargs cat | mysql

ls这个指令加上-1 -t -r三个选项后,便能按时间顺序排列所有的纪录档。

4.9.4 Binary Update Log

以后binary update log将会用来取代update log,因此希望你能尽快改用binary update log。

binary update log档案以更有效率的格式纪录update log里面的资讯。此外,里面还纪录每个更新资料库的指令耗费多少时间。没有更动资料库的指令不会被写入纪录档中。如果想要纪录所有的sql指令,你应该使用general query log。

只要在启动mysqld时加上--log-bin[=file_name]选项就能改用。 binary update log。

binary update log的副档名命名方式和update log一样,附档名递增的时机也和update log相同。或是当纪录档大小达到max_binlog_size上限时, mysqld会自动产生一个新的纪录档。你可以透过reset master这个sql指令删除所有目前未被开启的binary update log files。 (只保留目前使用中的纪录档)

mysqld有两个选项跟binary update log有关:

1. binlog-do-db=database_name:只纪录某个资料库的更动资料

2. binlog-ignore-db=database_name:不纪录某个资料库的更动资料

为了要知道曾经产生过哪些binary update log files, mysqld会产生一个binary log index档,里面包含所有使用过的binary update log的档名。 binary log index档的档名预设和binary update log相同,不过副档名则改为index。

你可以用mysqlbinlog指令来检视binary update log档的内容。例如你可以执行下列指令以binary update log的内容更新某个mysql server。

shell> mysqlbinlog log-file | mysql -h server_name

你也可以用mysqlbinlog读取远端mysql server的binary update log。执行mysqlbinlog --help会让你更了解如何使用这个程式。

binary update log写入的时机和update log相同。以确保能正确地纪录每个指令执行的顺序。

mysql提供几种不同功用的纪录档,以便于让你了解mysqld发生了什么问题。

1. The error log:纪录所有mysqld启动,执行和结束时发生的错误讯息。

2. The isam log:纪录所有更动ISAM资料表的动作。

3. The query log:纪录所有的连线资料以及执行的查询语法。

4. The update log:储存所有更动资料的指令。

5. The binary log: Stores all statements that changes something. Used also for replication

6. The slow log:纪录所有查询时间超过long_query_time或不使用索引的查询动作。

你可以在mysqld的资料目录中找到所有的纪录档。

4.9.2 The General Query Log

如果想知道mysqld里面发生了什么事的话,你就应该在启动mysqld时加上--log[=file]这个选项。这样一来,所有的连线及查询动作都会被写入纪录档中。 (预设档名为'hostname'.log)这个在网路程式的除错方面很有帮助。

纪录档中每笔资料写入的时机是当mysqld接收到该指令的时候,这有可能会跟sql指令执行的顺序不同。因此,本纪录档的写入时机和update log与binary log不同。

4.9.3 The Update Log

当你在执行mysqld时,如果有加上--log-update[=file_name]选项的话, mysqld会将所有关于更新资料的SQL commands写入纪录档中。在没有指定file_name的情况下,预设会用主机名称当作纪录档的档案名称。如果你指定的档案名称不包含完整路径的话,纪录档会放置在资料目录中。如果档案名称没有指定副档名的话, mysqld会以"file_name.###"作为纪录档的档名,其中###是阿拉伯数字,每当下列状况发生时,这个数字就会加一。

1.执行mysqladmin refresh

2.执行mysqladmin flush-logs

3.执行FLUSH LOGS sql指令

4.重新启动mysqld

update logging还有一项特点就是它只会纪录"真正"改变资料的动作。因此,带有where选项的updata或delete指令如果没有更动任何资料的话,这个动作就不会被写入纪录档。甚至在updata指令没有变更栏位值的情况下,该指令也不会被纪录下来。

update logging执行的时机是介于sql指令结束以及lock解开以前。这样可以确保所有的变动纪录是依照实际执行的顺序写入纪录档中。

你可以执行下列指令来用update log file更新资料库。 (假设你的update log files的档名格式为file_name.###)

shell> ls -1 -t -r file_name.[0-9]* | xargs cat | mysql

ls这个指令加上-1 -t -r三个选项后,便能按时间顺序排列所有的纪录档。

4.9.4 Binary Update Log

以后binary update log将会用来取代update log,因此希望你能尽快改用binary update log。

binary update log档案以更有效率的格式纪录update log里面的资讯。此外,里面还纪录每个更新资料库的指令耗费多少时间。没有更动资料库的指令不会被写入纪录档中。如果想要纪录所有的sql指令,你应该使用general query log。

只要在启动mysqld时加上--log-bin[=file_name]选项就能改用。 binary update log。

binary update log的副档名命名方式和update log一样,附档名递增的时机也和update log相同。或是当纪录档大小达到max_binlog_size上限时, mysqld会自动产生一个新的纪录档。你可以透过reset master这个sql指令删除所有目前未被开启的binary update log files。 (只保留目前使用中的纪录档)

mysqld有两个选项跟binary update log有关:

1. binlog-do-db=database_name:只纪录某个资料库的更动资料

2. binlog-ignore-db=database_name:不纪录某个资料库的更动资料

为了要知道曾经产生过哪些binary update log files, mysqld会产生一个binary log index档,里面包含所有使用过的binary update log的档名。 binary log index档的档名预设和binary update log相同,不过副档名则改为index。

你可以用mysqlbinlog指令来检视binary update log档的内容。例如你可以执行下列指令以binary update log的内容更新某个mysql server。

shell> mysqlbinlog log-file | mysql -h server_name

你也可以用mysqlbinlog读取远端mysql server的binary update log。执行mysqlbinlog --help会让你更了解如何使用这个程式。

binary update log写入的时机和update log相同。以确保能正确地纪录每个指令执行的顺序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值