ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL——日志管理

2021-08-02 15:04:15  阅读:137  来源: 互联网

标签:log 管理 -- 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: 后边可以接正则匹配模式,大小写不敏感

  

标签:log,管理,--,MySQL,----,二进制,mysql,日志
来源: https://www.cnblogs.com/zhangyh-blog/p/15089910.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有