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

  • 相关阅读:
    LeetCode 275. H-Index II
    LeetCode 274. H-Index
    LeetCode Gray Code
    LeetCode 260. Single Number III
    LeetCode Word Pattern
    LeetCode Nim Game
    LeetCode 128. Longest Consecutive Sequence
    LeetCode 208. Implement Trie (Prefix Tree)
    LeetCode 130. Surrounded Regions
    LeetCode 200. Number of Islands
  • 原文地址:https://www.cnblogs.com/eoiioe/p/1494640.html
Copyright © 2011-2022 走看看