MySQL日志管理
SHOW GLOBAL VARIABLES LIKE ‘%log%‘;查看关于log的全局变量
一、日志分类
1.错误日志 2.一般查询日志 3.慢查询日志
4.二进制日志 5.中继日志 6.事务日志 7.滚动日志
二、日志详解
1.错误日志
说明:在对应的数据目录中,以主机名+.err命名的文件,错误日志记录的信息类型:
- 记录了服务器运行中产生的错误信息
- 记录了服务在启动和停止是所产生的信息
- 在从服务器上如果启动了复制进程的时候,复制进程的信息也会被记录
- 记录event事件错误日志
配置mysql的主配置文件:
1 2 |
log_error = /mydata/data/mysql . test .com.err #指定错误日志的位置,默认是在数据目录下,这个位置mysql用户必须有写权限
|
2.一般查询日志
说明:对除了慢查日志中记录的查询信息都将记录下来,这将对服务器主机产生大量的压力,所以对于繁忙的服务器应该关闭这个日志
与查询日志相关的变量,
1 2 3 4 |
log = {ON|OFF} #是否启用查询日志,该指令在mysq5.6中已废弃
|
3.慢查询日志
说明:默认为关闭状态,记录下来查询时间超过设定时长的查询,这些查询日志将被慢查日志记录下来
配置mysql的主配置文件:
1 2 3 4 5 |
slow_query_log = {ON | OFF} #是否开启慢慢查询日志,默认是关闭的
|
4.二进制日志
说明:默认开启,精确的记录了用户对数据库中的数据进行操作的命令和操作的数据对象,
任何引起或可能引起数据库变化的操作,二进制日志都会记录下来。
二进制日志文件的作用:
- 提供了增量备份的功能
- 提供了数据基于时间点的恢复,这个恢复的时间点可以由用户控制
- 为mysql的复制架构提供基础,将这主服务器的二进制日志复制到从服务器上并执行同样的操作,就可将数据进行同步
二进制日志格式:
- 基于语句 statement
- 基于行 row
- 混合方式 mixed
二进制日志事件:
- position 基于位置
- datetime 基于时间
二进制日志的查看与删除方式:
1 2 3 4 5 |
mysql>show master status; 查看当前正在使用的二进制日志
Usage:SHOW BINLOG EVENTS IN ‘mysql-bin.00001‘ FROM 107 #查看mysql-bin.00001日志文件的事件信息,且从事件107位置开始显示
mysql>SHOW BINARY LOGS ; #查看所有的二进制日志文件 +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 1165 | | mysql-bin.000002 | 126 | | mysql-bin.000003 | 126 | | mysql-bin.000004 | 884 | | mysql-bin.000005 | 126 | | mysql-bin.000006 | 126 | | mysql-bin.000007 | 126 | | mysql-bin.000008 | 126 | | mysql-bin.000009 | 206 | | mysql-bin.000010 | 126 | | mysql-bin.000011 | 126 | | mysql-bin.000012 | 391 | | mysql-bin.000013 | 7984 | | mysql-bin.000014 | 286 | | mysql-bin.000015 | 1325 | | mysql-bin.000016 | 390 | | mysql-bin.000017 | 371 | +------------------+-----------+ 17 rows in set (0.00 sec) mysql> PURGE BINARY LOGS TO ‘mysql-bin.000003‘; #删除二进制日志文件之前的所有日志文件。再次查看,二进制日志文件,000001和000002日志文件已经被删除。 Query OK, 0 rows affected (0.01 sec) mysql> SHOW BINARY LOGS ; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000003 | 126 | | mysql-bin.000004 | 884 | | mysql-bin.000005 | 126 | | mysql-bin.000006 | 126 | | mysql-bin.000007 | 126 | | mysql-bin.000008 | 126 | | mysql-bin.000009 | 206 | | mysql-bin.000010 | 126 | | mysql-bin.000011 | 126 | | mysql-bin.000012 | 391 | | mysql-bin.000013 | 7984 | | mysql-bin.000014 | 286 | | mysql-bin.000015 | 1325 | | mysql-bin.000016 | 390 | | mysql-bin.000017 | 371 | +------------------+-----------+ 15 rows in set (0.00 sec) |
文件系统中查看二进制日志的命令:mysqlbinlog
1 2 3 4 5 6 |
mysqlbinlog
|
配置mysql的主配置文件:
1 2 3 4 5 6 7 8 9 |
sql_log_bin = {ON|OFF} #用于控制二进制日志信息是否记录进日志文件。默认为ON,表示启用记录功能。用户可以在会话级别修改此变量的值,但其必须具有SUPER权限
|
注:一般建议将binlog日志与数据文件分开存放,不但可以提高mysql性能,还可以增加安全性!
5.中继日志
说明:主要是在mysql服务器的中从架构中的从服务器上用到的,当从服务器想要和主服务器进行数据的同步时,从服务器将主服务器的二进制日志文件拷贝到己的主机上放在中继日志中,然后调用SQL线程按照拷中继日志文件中的二进制日志文件执行以便就可达到数据的同步
开启的方法:(只在从服务器上开启)
配置mysql的主配置文件:
1 2 3 4 5 6 |
relay-log = file_name #指定中继日志的位置和名字,默认为host_name-relay-bin。也可以使用绝对路径,以指定非数据目录来存储中继日志
|
6.事务日志
说明:详细的记录了在什么时间发生了什么时候,在哪个时间对哪些数据进行了改变,能后实现事件的重放,一般只记录对数据进行改变的操作,对于读操作一般不进行记录。
事物日志为数据库服务器实现以下功能:
(1).将随机IO转换为顺序IO,大大的提高了数据库的性能,存储的数据可能存在在磁盘的不同位置,降低了数据的读取和操作性能。转换为顺序IO的原理为,先将数据存放在日志文件中,然后由RDBSM的后台将日志中的数据存放到磁盘上,这样就保证了存储的数据是连续的。
(2).为事件重放提供基础,事务日志详细的记录了时间发生的时间以及操作的数据对象,事务进程可以根据这些信息进行时间重放。
默认的事务日志文件有两个,位于数据目录下以ibdata+number结尾的数字,我们可以对事务日志的位置、文件大小、增长方式进行定义,定义的方法如下:
这里以使用支持事务的Innodb存储引擎为例,
配置mysql的主配置文件:
1 2 3 4 5 6 7 |
innodb_data_home_dir = /mydata/data #InnoDB所有共享表空间数据文件的目录路径,默认在数据目录下
|
7.滚动日志
说明:只要是针对二进制日志进行滚动的,对某个类型的日志文件滚动一次就生成一个新的相对应的日志文件,通过这种方法保证日志文件的特定大小,从而保证服务器在对日志文件查询时有较高的响应能力。
滚动二进制日志的命令:
1 |
mysql> FLUSH LOGS; #实现二进制日志滚动
|