mysql各种日志

    

查看版本


    mysql> select version();
        +------------+
        | version()  |
        +------------+
        | 5.7.24-log |
        +------------+


查看安装路径 --- C:\Program Files\MySQL\MySQL Server 5.7\


    mysql> show variables like '%char%';    
        +--------------------------+---------------------------------------------------------+
        | Variable_name            | Value                                                   |
        +--------------------------+---------------------------------------------------------+
        | character_set_client     | utf8                                                    |
        | character_set_connection | utf8                                                    |
        | character_set_database   | latin1                                                  |
        | character_set_filesystem | binary                                                  |
        | character_set_results    | utf8                                                    |
        | character_set_server     | latin1                                                  |
        | character_set_system     | utf8                                                    |
        | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
        +--------------------------+---------------------------------------------------------+


查看日志文件路径 --- C:\ProgramData\MySQL\MySQL Server 5.7\Data\mysql-bin


    mysql> show variables like 'log_%';
        +----------------------------------------+------------------------------------------------------------+
        | Variable_name                          | Value                                                      |
        +----------------------------------------+------------------------------------------------------------+
        | log_bin                                | ON                                                         |
        | log_bin_basename                       | C:\ProgramData\MySQL\MySQL Server 5.7\Data\mysql-bin       |
        | log_bin_index                          | C:\ProgramData\MySQL\MySQL Server 5.7\Data\mysql-bin.index |
        | log_bin_trust_function_creators        | OFF                                                        |
        | log_bin_use_v1_row_events              | OFF                                                        |
        | log_builtin_as_identified_by_password  | OFF                                                        |
        | log_error                              | .\HLW103339.err                                            |
        | log_error_verbosity                    | 3                                                          |
        | log_output                             | FILE                                                       |
        | log_queries_not_using_indexes          | OFF                                                        |
        | log_slave_updates                      | OFF                                                        |
        | log_slow_admin_statements              | OFF                                                        |
        | log_slow_slave_statements              | OFF                                                        |
        | log_statements_unsafe_for_binlog       | ON                                                         |
        | log_syslog                             | ON                                                         |
        | log_syslog_tag                         |                                                            |
        | log_throttle_queries_not_using_indexes | 0                                                          |
        | log_timestamps                         | UTC                                                        |
        | log_warnings                           | 2                                                          |
        +----------------------------------------+------------------------------------------------------------+

文件夹下相关日志文件:

查看二进制binlog日志        
    方式一、mysql> show binlog events in 'mysql-bin.000014';
        mysql> show binlog events in 'mysql-bin.000014';
                +------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------+
                | Log_name         | Pos  | Event_type     | Server_id | End_log_pos | Info                                                                                  |
                +------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------+
                | mysql-bin.000014 |    4 | Format_desc    |         1 |         123 | Server ver: 5.7.24-log, Binlog ver: 4                                                 |
                | mysql-bin.000014 |  123 | Previous_gtids |         1 |         154 |                                                                                       |
                | mysql-bin.000014 |  154 | Anonymous_Gtid |         1 |         219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'                                                  |
                | mysql-bin.000014 |  219 | Query          |         1 |         368 | use `blog`; ALTER TABLE `t_press_info`
                ADD FULLTEXT INDEX `index_full_press` (`press`) |
                | mysql-bin.000014 |  368 | Anonymous_Gtid |         1 |         433 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'                                                  |
                | mysql-bin.000014 |  433 | Query          |         1 |         505 | BEGIN                                                                                 |
                | mysql-bin.000014 |  505 | Table_map      |         1 |         570 | table_id: 123 (blog.t_press_info)                                                     |
                | mysql-bin.000014 |  570 | Update_rows    |         1 |         664 | table_id: 123 flags: STMT_END_F                                                       |
    方式二、mysqlbinlog  mysql-bin.000014
        例如:
            下面使用 mysqlbinlog 命令,来查看C:\ProgramData\MySQL\MySQL Server 5.7\Data目录下的mysql-bin.000014文件,代码执行如下:    
            C:\ProgramData\MySQL\MySQL Server 5.7\Data>mysqlbinlog mysql-bin.000014
                    ......省略
                    BINLOG '
                    QbaHYBMBAAAAQQAAAEREAAAAAHsAAAAAAAEABGJsb2cADHRfcHJlc3NfaW5mbwAFAw8PEhIGlgCW
                    AAAAGFzPR1Q=
                    QbaHYB8BAAAAbwAAALNEAAAAAHsAAAAAAAEAAgAF///4AQAAAA3ljJfkuqzniYgxMTExD+WMl+S6
                    rOWHuueJiOekvvgCAAAAEmJpbmxvZyB1cGRhdGUgZGF0YQ/ljJfkuqzlh7rniYjnpL511QUt
                    '/*!*/;
                    # at 17587
                    #210427 14:59:13 server id 1  end_log_pos 17618 CRC32 0xa4eef463        Xid = 3787
                    COMMIT/*!*/;
                    # at 17618
                    #210427 15:04:07 server id 1  end_log_pos 17683 CRC32 0x3a7d0a0d        Anonymous_GTID  last_committed=25       sequence_number=26      rbr_only=no
                    SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
                    # at 17683
                    #210427 15:04:07 server id 1  end_log_pos 17802 CRC32 0xc809181b        Query  thread_id=455    exec_time=0     error_code=0
                    SET TIMESTAMP=1619507047/*!*/;
                    DROP TABLE `t_note` /* generated by server */
                    /*!*/;
                    SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
                    DELIMITER ;
                    # End of log file
                    /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
                    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

            

binlog,redolog,undolog都是什么,起什么作用


    binlog(二进制日志)是mysql-server层的,主要是做主从复制,时间点恢复使用
    redolog(重做日志)是InnoDB存储引擎层的,用来保证事务安全
    undolog(回滚日志)保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读。select如果没有特定加锁的话就是快照读,
        用到了undolog,而insert delete和update都是当前读,与这个日志关系不大。


1:重做日志(redo log)
    作用:
      确保事务的持久性。redo日志记录事务执行后的状态,用来恢复未写入data file的已成功事务更新的数据。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。
    内容:
      物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。
    什么时候产生:
      事务开始之后就产生redo log,redo log的落盘并不是随着事务的提交才写入的,而是在事务的执行过程中,便开始写入redo log文件中。
    什么时候释放:
      当对应事务的脏页写入到磁盘之后,redo log的使命也就完成了,重做日志占用的空间就可以重用(被覆盖)。
    对应的物理文件:
      默认情况下,对应的物理文件位于数据库的data目录下的ib_logfile1&ib_logfile2
      innodb_log_group_home_dir 指定日志文件组所在的路径,默认./ ,表示在数据库的数据目录下。
      innodb_log_files_in_group 指定重做日志文件组中文件的数量,默认2
2:回滚日志(undo log)
    作用:
      保证数据的原子性,保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读
    内容:
      逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于redo log的。
    什么时候产生:
      事务开始之前,将当前是的版本生成undo log,undo 也会产生 redo 来保证undo log的可靠性
    什么时候释放:
      当事务提交之后,undo log并不能立马被删除,而是放入待清理的链表,由purge线程判断是否由其他事务在使用undo段中表的上一个事务之前的版本信息,决定是否可以清理undo log的日志空间。
    对应的物理文件:
      MySQL5.6之前,undo表空间位于共享表空间的回滚段中,共享表空间的默认的名称是ibdata,位于数据文件目录中。
      MySQL5.6之后,undo表空间可以配置成独立的文件,但是提前需要在配置文件中配置,完成数据库初始化后生效且不可改变undo log文件的个数
      如果初始化数据库之前没有进行相关配置,那么就无法配置成独立的表空间了。
3:二进制日志(binlog)
            binlog 的配置信息:show variables like '%log_bin%';
            binlog 的格式:show variables like 'binlog_format';
            日志的文件列表:show binary logs;
            当前日志的写入状态:show master status;
            清空 binlog 日志:reset master;
    作用:
      用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。
      用于数据库的基于时间点的还原。
    内容:
      逻辑格式的日志,可以简单认为就是执行过的事务中的sql语句。
      但又不完全是sql语句这么简单,而是包括了执行的sql语句(增删改)反向的信息,也就意味着delete对应着delete本身和其反向的insert;update对应着update执行前后的版本的信息;insert对应着delete和insert本身的信息。
      在使用mysqlbinlog解析binlog之后一些都会真相大白。
      因此可以基于binlog做到类似于oracle的闪回功能,其实都是依赖于binlog中的日志记录。
    什么时候产生:
      事务提交的时候,一次性将事务中的sql语句(一个事物可能对应多个sql语句)按照一定的格式记录到binlog中。
      这里与redo log很明显的差异就是redo log并不一定是在事务提交的时候刷新到磁盘,redo log是在事务开始之后就开始逐步写入磁盘。
      因此对于事务的提交,即便是较大的事务,提交(commit)都是很快的,但是在开启了bin_log的情况下,对于较大事务的提交,可能会变得比较慢一些。
      这是因为binlog是在事务提交的时候一次性写入的造成的,这些可以通过测试验证。
    什么时候释放:
      binlog的默认是保持时间由参数expire_logs_days配置,也就是说对于非活动的日志文件,在生成时间超过expire_logs_days配置的天数之后,会被自动删除。
    对应的物理文件:
      配置文件的路径为log_bin_basename,binlog日志文件按照指定大小,当日志文件达到指定的最大的大小之后,进行滚动更新,生成新的日志文件。
      对于每个binlog日志文件,通过一个统一的index文件来组织。
    查看是否开启
        mysql> show variables like 'log_bin';
            +---------------+-------+
            | Variable_name | Value |
            +---------------+-------+
            | log_bin       | ON    |
            +---------------+-------+
            1 row in set
    查看日志文件
        mysql> show binary logs;
            +------------------+-----------+
            | Log_name         | File_size |
            +------------------+-----------+
            | mysql-bin.000001 |    236897 |
            | mysql-bin.000002 |       177 |
            | mysql-bin.000003 |       177 |
            | mysql-bin.000004 |     94725 |
            | mysql-bin.000005 |       177 |
            | mysql-bin.000006 |       879 |
            | mysql-bin.000007 |       177 |
            | mysql-bin.000008 |       177 |
            | mysql-bin.000009 |       177 |
            | mysql-bin.000010 |       177 |
            | mysql-bin.000011 |       177 |
            | mysql-bin.000012 |       177 |
            | mysql-bin.000013 |       177 |
            | mysql-bin.000014 |      5394 |
            +------------------+-----------+
    查看最新的文件
        mysql> show master status;
            +------------------+----------+--------------+------------------+-------------------+
            | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
            +------------------+----------+--------------+------------------+-------------------+
            | mysql-bin.000014 |     5394 |              |                  |                   |
            +------------------+----------+--------------+------------------+-------------------+
4:错误日志(errorlog)

5:慢查询日志(slow query log)

查看是否记录到慢查询日志文件的时间
    mysql> SHOW VARIABLES LIKE 'long_query_time';
        +-----------------+----------+
        | Variable_name   | Value    |
        +-----------------+----------+
        | long_query_time | 0.000100 |
        +-----------------+----------+
查看慢查询文件
    mysql> SHOW VARIABLES LIKE 'slow_query_log_file';
        +---------------------+--------------------+
        | Variable_name       | Value              |
        +---------------------+--------------------+
        | slow_query_log_file | HLW103339-slow.log |
        +---------------------+--------------------+
设置是否记录到慢查询日志文件的时间
    mysql> SET long_query_time=10;

    mysql> SHOW VARIABLES LIKE 'long_query_time';
        +-----------------+-----------+
        | Variable_name   | Value     |
        +-----------------+-----------+
        | long_query_time | 10.000000 |
        +-----------------+-----------+

6:一般查询日志(general log)

7:中继日志(relay log)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值