zoukankan      html  css  js  c++  java
  • MySQL 错误日志(Error Log)

        同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件。通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。

    这些日志能够帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。本文主要描写叙述错误日志文件。

     

    1、MySQL日志文件系统的组成
       a、错误日志:记录启动、运行或停止mysqld时出现的问题。
       b、通用日志:记录建立的client连接和运行的语句。
       c、更新日志:记录更改数据的语句。该日志在MySQL 5.1中已不再使用。
       d、二进制日志:记录全部更改数据的语句。

    还用于复制。


       e、慢查询日志:记录全部运行时间超过long_query_time秒的全部查询或不使用索引的查询。
       f、Innodb日志:innodb redo log
      
       缺省情况下,全部日志创建于mysqld数据文件夹中。


       能够通过刷新日志,来强制mysqld来关闭和又一次打开日志文件(或者在某些情况下切换到一个新的日志)。
       当你运行一个FLUSH LOGS语句或运行mysqladmin flush-logs或mysqladmin refresh时。则日志被老化。
       对于存在MySQL复制的情形下。从复制server将维护很多其它日志文件,被称为接替日志。

     

    2、错误日志
       错误日志是一个文本文件。


       错误日志记录了MySQL Server每次启动和关闭的具体信息以及运行过程中全部较为严重的警告和错误信息。


       能够用--log-error[=file_name]选项来开启mysql错误日志。该选项指定mysqld保存错误日志文件的位置。
       对于指定--log-error[=file_name]选项而未给定file_name值,mysqld使用错误日志名host_name.err 并在数据文件夹中写入日志文件。
       在mysqld正在写入错误日志到文件时。运行FLUSH LOGS 或者mysqladmin flush-logs时。server将关闭并又一次打开日志文件。
       建议在flush之前手动重命名错误日志文件,之后mysql服务将使用原始文件名称打开一个新文件。


       下面为错误日志备份方法:
          shell> mv host_name.err host_name.err-old
          shell> mysqladmin flush-logs
          shell> mv host_name.err-old backup-directory

     

    3、实战演示
    #启用错误日志,缺省情况下文件名称为: hostname.err
    #下面2种方式均可进行错误日志的配置

    --log-error=file_name #命令行选项(command option)
    log-error=file_Name   #配置文件(configure file)

    #查看当前的错误日志配置,缺省情况下位于数据文件夹
    mysql> show variables like 'log_error';
    +---------------+-------------------------+
    | Variable_name | Value                   |
    +---------------+-------------------------+
    | log_error     | /var/lib/mysql/SZDB.err |
    +---------------+-------------------------+
    1 row in set (0.00 sec)

    #查看当前mysql server错误日志文件
    SZDB:/var/lib/mysql # tail SZDB.err
    140906 22:06:45 InnoDB: Completed initialization of buffer pool
    140906 22:06:45 InnoDB: highest supported file format is Barracuda.
    140906 22:06:45  InnoDB: Waiting for the background threads to start
    140906 22:06:46 InnoDB: 5.5.37 started; log sequence number 1605345
    140906 22:06:47 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
    140906 22:06:47 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
    140906 22:06:47 [Note] Server socket created on IP: '0.0.0.0'.
    140906 22:06:47 [Note] Event Scheduler: Loaded 0 events
    140906 22:06:47 [Note] /usr/sbin/mysqld: ready for connections.
    Version: '5.5.37-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL)

    #停止mysqlserver
    SZDB:~ # service mysql stop
    Shutting down MySQL....                                               done

    #使用配置文件来设置log-error參数
    SZDB:~ # echo "log-error=/tmp/SZDB.err">>/etc/my.cnf
    SZDB:~ # echo "skip_opt">>/etc/my.cnf     #加入一个异常參数skip_opt
    SZDB:~ # grep -v ^# /etc/my.cnf
    [mysqld]
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    log-error=/tmp/SZDB.err
    skip_opt

    #Author : Leshami
    #Blog   :
    http://blog.csdn.net/leshami
    #启动mysqlserver
    SZDB:~ # mysqld_safe --user=mysql &
    [1] 7315
    SZDB:~ # 140907 13:40:33 mysqld_safe Logging to '/tmp/SZDB.err'.
    140907 13:40:33 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    140907 13:40:33 mysqld_safe mysqld from pid file /var/lib/mysql/SZDB.pid ended
    [1]+  Done                    mysqld_safe --user=mysql
    SZDB:~ # more /tmp/SZDB.err
    140907 13:40:33 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    140907 13:40:33 [ERROR] /usr/sbin/mysqld: ambiguous option '--skip-opt' (--skip-optimizer_prune_level)
    140907 13:40:33 [ERROR] Aborting          #出现错误提示为有歧义的參数,实例终止
    140907 13:40:33 mysqld_safe mysqld from pid file /var/lib/mysql/SZDB.pid ended

    #改动my.cnf,删除skip-opt选项
    SZDB:~ # vi /etc/my.cnf
    SZDB:~ # grep -v ^# /etc/my.cnf
    [mysqld]
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    log-error=/tmp/SZDB.err

    #再次启动mysqlserver
    SZDB:~ # mysqld_safe --user=mysql &    
    [1] 7511
    SZDB:~ # 140907 13:43:23 mysqld_safe Logging to '/tmp/SZDB.err'.
    140907 13:43:23 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    SZDB:~ # more /tmp/SZDB.err
    140907 13:40:33 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    140907 13:40:33 [ERROR] /usr/sbin/mysqld: ambiguous option '--skip-opt' (--skip-optimizer_prune_level)
    140907 13:40:33 [ERROR] Aborting
    #下面内容为正常启动的相关信息
    140907 13:40:33 mysqld_safe mysqld from pid file /var/lib/mysql/SZDB.pid ended
    140907 13:43:23 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    140907 13:43:23 [Note] Plugin 'FEDERATED' is disabled.
    140907 13:43:23 InnoDB: The InnoDB memory heap is disabled
    140907 13:43:23 InnoDB: Mutexes and rw_locks use GCC atomic builtins
    140907 13:43:23 InnoDB: Compressed tables use zlib 1.2.3
    140907 13:43:23 InnoDB: Using Linux native AIO
    140907 13:43:23 InnoDB: Initializing buffer pool, size = 128.0M
    140907 13:43:23 InnoDB: Completed initialization of buffer pool
    140907 13:43:23 InnoDB: highest supported file format is Barracuda.
    140907 13:43:23  InnoDB: Waiting for the background threads to start
    140907 13:43:24 InnoDB: 5.5.37 started; log sequence number 1620641
    140907 13:43:25 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
    140907 13:43:25 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
    140907 13:43:25 [Note] Server socket created on IP: '0.0.0.0'.
    140907 13:43:25 [Note] Event Scheduler: Loaded 0 events
    140907 13:43:25 [Note] /usr/sbin/mysqld: ready for connections.
    Version: '5.5.37-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL)

    从上面的错误日能够看出。错误日志文件的格式。通常例如以下:
      时间  [错误级别]  错误信息
      有些日志信息不一定包括错误级别

    鹏城DBA总群 

  • 相关阅读:
    [转]CROSS APPLY 和outer apply 的区别
    第一次WCF部署成功心得(UP+证书)
    .NET 简单实现广播
    【转】 c#注册全局快捷键
    软件人才成长链
    [转]关于VS2005智能设备中无法找到PInvoke DLL问题
    [转]我倡导无政府主义编程—Fred George访谈录
    运行Windows Mobile程序时报错:无法找到 PInvoke DLL SQLite.Interop.065.DLL
    系统分析师考试说明
    [转]Oracle 字符集的查看和修改
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5314957.html
Copyright © 2011-2022 走看看