• MySQL日志概述


    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。

    http://www.cnblogs.com/shijiaqi1066/p/3859866.html

     

     

     

    MySQL常用日志

    错误日志:--log-err  记录启动,运行,停止mysql时出现的信息。

    二进制日志:--log-bin  记录所有更改数据的语句,还用于复制,恢复数据库用。

    查询日志:--log  记录建立的客户端连接和执行的语句。

    慢查询日志--log-slow-queries  记录所有执行超过long_query_time秒的所有查询。

    更新日志--log-update  二进制日志已经代替了更新日志,更新日志在MySQL 5.1中不再使用。

    查看系统日志的相关配置信息

    命令:show global variables like '%log%';

    wps_clip_image-31568

    选项说明:

    log:表示查询日志与慢查询日志是否开启。是一个总开关。

    log_output:日志的存储方式,以FILE或以TABLE存储日志。

    general_log:表示查询日志是否开启。

    general_log_file:/mydata/data/mysql.log

    这些值都可以使用SET语句临时修改。若需要需要永久生效,则只需要修改配置文件中的变量。

    错误日志

    MySQL一般默认开启了错误日志。

    错误日志的记录的信息内容:

    • 服务器启动和关闭过程中的信息。
    • 服务器运行过程中的错误信息。
    • 事件调度器运行一个事件时产生的信息。
    • 在从服务器上启动从服务器进程时产生的信息。

    日志一般位于数据目录下datadir 错误日志的名称一般为 主机名.err

    错误日志的配置

    • log-error :是否启用错误日志。
    • log-warnings:是否启用警告日志。

    二进制日志

    记录修改数据或有可能引起数据改变的MySQL语句。

    日志的位置

    使用--log-bin=[file_name]选项启动时,mysqld开始将数据变更情况写入日志文件。没有指定file_name值,默认名为主机名后跟“-bin”。若给出了文件名,但没包含路径,则问默认写入datadir指定的目录中。

    日志的格式

    MySQL5.5 中,二进制日志格式分为三种,通过--binlog-format设置:

    STATEMENT

    MySQL5.1 之前的版本都采用这种方式,日志中记录的都是语句。mysqlbinlog工具,可以清晰地看到每条语句的文本。这种格式的优点是日志记录清晰易读,日志量少,对IO影响小。缺点是在某些情况下slave的日志复制会出错。

    ROW

    MySQL 5.1.11之后,出现了这种新的日志格式。它将每一行的变更记录到日志中,而不是记录SQL语句。这种格式的优点是会记录每一行数据的变化细节,不会出现无法复制。缺点是日志量,对IO影响大。

    MIXED

    目前MySQL默认的日志格式。该格式混合了STATEMENT和ROW两种日志,避免两种各自的缺点,尽可能利用了两种的优点。默认情况下采用STATEMENT,特殊情况下使用ROW。

      • 使用了DML语句。
      • 使用了临时表。
      • 使用了UUID()、USER()、CURRENT_USER()、FOUND_ROWS()、ROW_COUNT()等不确定函数。这种函数在主从中的值不一定相同。
      • 表的存储引擎为NDB,这时对于表的DML操作都会以ROW格式记录。
      • 使用了INSERT DELAY语句。
      • 使用了用户定义函数。

    日志的读取

    使用mysqlbinlog命令读取二进制日志。

    日志的删除

    对于OLTP系统,每条会生成大量的二进制日志。日志若长时间不清楚会浪费很大的磁盘空间。所以需要定期的清理二进制日志。

    方法1

    命令:RESTART MASTER;

    该命令会删除所有的binlog日志。新日志编号重新从“000001”开始。

    方法2

    命令:PURGE MASTER LOGS TO 'mysql-bin.******';

    该命令删除“******”编号之前所有的日志。

    方法3

    命令:PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh24:mi:ss';

    该命令删除日志为“yyyy-mm-dd hh24:mi:ss”之前的所有日志。

    方法4

    设置参数expire_logs_days = # ,此参数的含义是设置日志的过期天数,过了指定的天数后,日志将会被自动删除,这样有利于DBA管理日志的工作量。

    其他选项

    --binlog-do-db=db_name

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

    --binlog-ignore-db=db_name

    告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,不将更新保存到二进制日志中。

    若数据库启动时使用选项--binlog-do-db=DB_A,使用语句“use DB_B”置DB_B为当前数据库,此时使用update语句修改DB_A的表数据时出现如下情况:

    • 数据库DB_B不在允许binlog的列表内,该语句不写入二进制日志文件。
    • 数据库DB_B在允许binlog的列表内,该语句写入二进制日志文件。

    查询日志

    MySQL默认不启用查询日志。查询日志不光会记录查询语句,同样也会增删改有相应记录。由于日志量非常大,浪费磁盘IO,所以一般不建议开启

    查询日志的格式是纯文本的,可以直接读取。

    慢查询日志

    慢查询日志可以记录长时间的查询。慢查询默认是关闭的,由于慢查询日志对系统性能的问题很有帮助,所以建议开启,并经常查看

    慢查询的时长,不是光指的是sql语句的查询时间。是从查询启动开启到结束的时长,任何因为阻塞而导致时间也会包含在内。例:因为表锁而导致sql语句超时。

    有关慢查询日志功能的相关参数说明:

    log-slow-queries

    指定日志文件存放位置,该目录文件一定要有写的权限。可以不用设置,系统会给一个缺省的文件host_name-slow.log

    long_query_time

    SQL执行时间阈值,慢查询的单位为秒,可以精确到微秒。10.000000表示10秒整。

    打开mysql的慢查询日志很简单,只需要在mysql的配置文件里的[mysqld]下面加上

    log-slow-queries=mysql_slow.log 
    long_query_time=3

    慢查询日志用来收集那些花费太长时间(超过指定时间)执行的SQL语句,该指定时间由long_query_time服务器变量设定。

    --log-slow-queries[=file_name]选项启动慢查询日志。如果没有给出file_name值,默认未主机名,后缀为“-slow.log”;如果给出文件名,但不是绝对路径名,文件则写入数据目录。

    查询慢查询日志相关的常量

    命令:show global variables like '%slow%';

    wps_clip_image-30780

    若slow_query_log和log_slow_queries显示为on,那说明服务器的慢查询日志已经开启了。

    slow_launch_time跟慢查询日志没有任何关系, 它代表的是thread create的一个阈值。

    查询慢查询日志的阈值

    命令:show global variables like 'long_query_time';

    wps_clip_image-7535

    使用mysqldumpslow命令可以快速定位系统的SQL瓶颈。

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。

    http://www.cnblogs.com/shijiaqi1066/p/3859866.html

  • 相关阅读:
    CXF整合Spring之JaxWsProxyFactoryBean调用
    js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
    Python hypot() 函数
    Python cos() 函数
    Python atan2() 函数
    Python asin() 函数
    Python atan() 函数
    Python acos() 函数
    Python uniform() 函数
    Python shuffle() 函数
  • 原文地址:https://www.cnblogs.com/shijiaqi1066/p/3859866.html
Copyright © 2020-2023  润新知