Mysql日志
1 错误日志 Error Log
- 服务器启动关闭过程中的信息
- 服务器运行过程中的错误信息
- 从服务器上启动服务器进程时产生的信息
查看路径: show variables like 'log_error';
2 全查询日志 General Query Log
全查询日志记录了所有对数据库的请求信息,不论是否得到了正确的执行。
默认文件名 主机名.log
默认不记录,开启命令 set global_general_log=1
3 慢查询日志 Slow Query Log
纪录查询时间超过设定阀值的日志。
需要手动开启并这是阀值参数。
分析工具:mysqldumpslow
4 二进制日志 Binary Log
纪录所有变更的操作,select show 等操作不记录
作用
1 恢复,某些数据恢复需要二进制文件
2 用于复制,在主从复制中,从库利用主库上的 binlog 进行重播,实现主从同步;用于数据库基于时间点的还原。
开启命令:set sql_log_bin=1;
5 中继日志RelayLog
6 事务日志
1 redo log
- redo log 是重做日志。
- 它记录了数据页上的改动。
- 它指事务中修改了的数据,将会备份存储。
- 发生数据库服务器宕机、或者脏页未写入磁盘,可以通过redo log恢复。
- 它是Innodb存储引擎独有的
redolog的执行流程
binlog和redolog的不同
2 undo log
- undo log 叫做回滚日志,用于记录数据被修改前的信息(比如我们要insert一条数据了,那undo log会记录的一条对应的delete日志。我们要update一条记录时,它会记录一条对应相反的update记录)。
- 它跟redo log重做日志所记录的相反,重做日志记录数据被修改后的信息。undo log主要记录的是数据的逻辑变化,为了在发生错误时回滚之前的操作,需要将之前的操作都记录下来,这样发生错误时才可以回滚。
- 同时可以提供多版本并发控制下的读(MVCC)
问题
redo log与binlog的区别
第一:redo log是在InnoDB存储引擎层产生,而binlog是MySQL数据库的上层产生的。
第二:MySQL的binlog是逻辑日志,其记录是对应的SQL语句。而innodb存储引擎层面的重做日志是物理日志。
第三:两种日志与记录写入磁盘的时间点不同,二进制日志只在事务提交完成后进行一次写入。
而innodb存储引擎的重做日志在事务进行中不断地被写入,并日志不是随事务提交的顺序进行写入的。
第四:binlog不是循环使用,在写满或者重启之后,会生成新的binlog文件,redo log是循环使用。
第五:binlog可以作为恢复数据使用,主从复制搭建,redo log作为异常宕机或者介质故障后的数据恢复使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示