• 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相同。以确保能正确地纪录每个指令执行的顺序。

  • 相关阅读:
    linux UID,GID,EUID,EGID,SUID,SGID
    Hard模式题目
    【Todo】Java TreeSet学习 & ceiling,floor
    被信号打断的系统调用
    拟牛顿法——变种及其相互关系
    域名注册查询接口(API)的说明
    HDU 2825 Wireless Password(AC自动机+状压DP)
    串的模式匹配
    Android DES加密的CBC模式加密解密和ECB模式加密解密
    [Web Chart系列之五] 6. 实战draw2d之ConnectionRouter
  • 原文地址:https://www.cnblogs.com/eoiioe/p/1494640.html
Copyright © 2020-2023  润新知