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: 后边可以接正则匹配模式,大小写不敏感 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现