本文将探讨以下几个问题。
一、思考
- 问题一:MYSQL执行流程中会产生哪些日志?
相信大家都接触过binlog,redolog,undolog这些字眼,那么这些日志究竟在何时产生,存放于什么位置呢?
- 问题二:这些日志的作用是什么?
MYSQL产生这些日志的目的在于什么,或者说每一个日志能带来什么作用?
二、分析
2.1binlog
-
binlog功能开启
可通过以下命令检查binlog功能是否开启:
如果log_bin的value为OFF,可通过修改配置文件my.ini开启:
该值为binlog日志文件名称,可随意填,日志文件路径为datadir参数值。修改配置文件后,需要重启mysql服务方可生效。当开启之后会在log_bin_basename所在目录产生以下两个文件:
mylog.000001:binlog日志文件,记录了所有的DDL(数据定义语言)和DML(数据操纵语言,不包含数据查询语言)。
mylog.index:binlog索引文件,记录所有的二进制文件。
-
binlog查看方式
直接打开该文件为乱码,安装MYSQL时,其为我们提供了查看此日志的工具,即mysqlbinlog.exe。该工具位于mysql服务安装目录bin目录之下。使用方式:
mysqlbinlog --no-defaults mylog.000001,该命令查看的日志具体SQL部分被进行base64编码,可通过
mysqlbinlog --no-defaults --base64-output=decode-rows -v .\mylog.000001 > .\binlog.txt,将base64解码后的文件写到mylog.txt查看。
-
binlog产