MySQL——日志管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
一、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: 后边可以接正则匹配模式,大小写不敏感

  

posted @   映辉  阅读(49)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示