MySql教程

MySQL——日志管理

本文主要是介绍MySQL——日志管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、MySQL日志类型
1、错误:--log--error      ---------------------***
           host_name.err

2、常规: --general_log     
          host_name.log   general_log

3、慢速查询: --slow_query_log    --long_query_time      ---------------------***
              host_name-slow.log  slow_log

4、二进制: --log-bin    --expire-logs-days     ---------------------***
             host_name-bin.000001

5、审计: --audit_log   --audit_log_file
          audit.log


二、MySQL日志配置
        (1)错误日志
        [mysqld]
        log-error=/data/mysql/mysql.log

        查看配置:
                show variables like '%log%error%';

        作用:
                记录MySQL数据库的一般状态信息和报错信息,是我们对于数据库常规报错处理的常用日志。


        (2)一般查询日志
        [mysqld]
        general_log=on
        general_log_file=路径

        作用:
                记录所有执行成功的SQL语句信息。

        查看方式:
                show variables like '%gen%';


        (3)二进制日志(依赖于SQL层,不依赖于存储引擎)(不记录select,只记录变化)
         1、记录已经执行完成的语句和已经完成的事务
         
         2、功能:备份和时间点恢复、主从
         
         3、二进制日志的控制和操作:
                    a: 开启二进制日志:
                            vim /etc/my.cnf
                            
                            [mysqld]
                            log-bin=“datadir”/mysql-bin(文件名前缀)(不写路径默认是datadir下)

         
                    b: 定义记录方式:
                            statement: 记录执行的语句

                            row(推荐):以行模式记录---->记录所有行的变化日志
                            
                            mixed:
        
                    c: 设置:
                            vim /etc/my.cnf
                            
                            [mysqld]
                            log-bin=“datadir”/mysql-bin
                            binlog-format=row

                    d: 操作:
                            1)查看二进制日志:
                                --查看文件本身:
                                        --操作系统层面查看:
                                                    ls -l
                                                    重启数据库的时候、执行flush命令的时候会滚动----生成新的文件重新记录
                                        --mysql命令行中查看:
                                                    show master status;----查看当前正在使用的二进制日志
                                                    show binary logs;----查看所有存在的二进制日志


                                --查看文件内容:
                                        ---- 事件events: 命令的最小发生单元

                                        ---- 事件的位置号position: 每个事件在二进制文件中的相对位置号就是position号

                                        ---- 查看二进制日志内容:
                                                --查看所有内容:
                                                        进入目录下:
                                                            mysqlbinlog mysql-bin.000003
                                                --截取内容:
                                                        1 show master status;
                                                        2 show binlog events in 'mysql-bin.000003' ;                                                      
                                                        3 mysqlbinlog --start-position=120 --stop-position=339 mysql-bin.000003
                                                       
                                                        导出:mysqlbinlog --start-position=120 --stop-position=339 mysql-bin.000003 >/tmp/inc.sql
                                                      
                                                        4 导出的内容可以用来恢复:
                                                                1)使用source
                                                                2)使用 <
                            2)删除二进制日志:
                                    在配置文件中加上过期时间: SET GLOBAL expire_logs_days=30;(天)
                                    或者:
                                    PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day;
                                    根据文件名删除日志:
                                    PURGE BINARY LOGS TO 'mysql-bin.0000010';





        (4)慢查询日志
            1、功能:记录所有条件内的慢的SQL语句
            2、作用:定位问题的工具日志

            3、控制:
                vim /etc/my.cnf

                [mysqld]
                slow_query_log=on ------------------------------开启
                slow_query_log_file=/data/slow.log -------------定义文件
                long_query_time=10 -----------------------------超过30秒为操作慢的语句
                min_examined_row_limit=10-----------------------查询检查返回少于该参数指定行的SQL语句不被记录到慢日志
                log_queries_not_using_indexes-------------------不使用索引的慢查询日志是否记录到索引

            4、处理:
                mysqldumpslow -s c -t 10 /database/mysql/slow-log
                        输出记录次数最多的10条SQL语句,其中:
                        -s: 表示按照何种方式排序,c t l r分别为按照记录次数、时间、查询时间、返回的记录数来排序,
                            ac  at  al  ar为相应的倒叙

                        -t: 返回前面多少条的数据

                        -g: 后边可以接正则匹配模式,大小写不敏感

  

这篇关于MySQL——日志管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!