Mysql数据库日志类型查询与配置详解
mysql常见的日志类型有五种:错误日志、二进制日志、查询日志、慢查日志和中继日志。
一、错误日志
错误日志包含四类信息:
(1) 服务器启动和关闭进程过程中的信息;
(2) 服务器运行过程中的错误信息;
(3) 事件调度器运行一个事件时产生的信息;
(4) 在从服务器上启动从服务器进程时产生的信息。
在mysql中查看错误日志的存放路径:
代码如下 | |
# mysql -u root -p 123456 查看警告信息的状态: |
如果结果中“log_warnings“的值为1,说明警告信息也写到了错误日志中;为0,则说明没写到错误日志中。
My.ini配置信息:
代码如下 | |
#Enter a name for the error log file. Otherwise a default name will be used. #log-error=d:/mysql_log_err.txt |
二、二进制日志
二进制日志有两种功能:
(1) 做即时点恢复(基于时间点恢复的)
(2) 复制(将主服务器发生的任何改变复制到从服务器上保证数据一致)
二进制日志存储的信息是每一个明确或潜在的有可能使数据库中的数据发生改变的SQL语句。
查看是否开启二进制日志:
代码如下 | |
mysql> SHOW VARIABLES LIKE '%bin%'; |
如果结果中“log_bin”的值为“ON”则开启了二进制日志;为“OFF”则没有开启二进制日志。
查看有哪些二进制日志:
代码如下 | |
mysql> SHOW BINARY LOGS; |
说明:由于二进制日志文件不是单独的一个,而是多个,所以此时你看到的结果可能不止一个。要想看当前数据库正在使用的二进制日志文件是哪一个,用下面命令:
代码如下 | |
mysql> SHOW MASTER STATUS; |
二进制日志有三种格式:基于语句的,记录的是SQL语句;基于行的,记录的是SQL语句执行的结果;混合的。
代码如下 | |
mysql> SHOW BINLOG EVENTS IN 'binlog_name' FROM 107; |
查看二进制日志从某个位置发生改变的情况
说明:由于二进制日志的文件不是文本文件,所以一般的查看命令并不能查看二进制日志文件内容,要想查看二进制日志文件内容,就需要一个特殊的命令:mysqlbinlog
代码如下 | |
# mysqlbinlog 专门查看二进制日志文件的内容 例:# mysqlbinlog --start-position=‘107’ mysql-bin.00002 mysql-bin.00002 datetime=‘2012-04-08 20:00:01’ mysql-bin.00002 |
My.ini配置信息:
代码如下 | |
#Enter a name for the binary log. Otherwise a default name will be used. |
三、查询日志
查看查询日志状态:
代码如下 | |
mysql> SHOW VARIABLES LIKE 'general_log'; |
如果结果中的“general_log”的值为“ON“,则是开启了查询日志;如果为”OFF“,则没有开启查询日志。
指定查询日志的路径:只要在general_log_file= 后面写上路径即可。
My.ini配置信息:
代码如下 | |
#Enter a name for the query log file. Otherwise a default name will be used. #log=d:/mysql_log.txt |
四、慢查日志
查看慢查日志状态看状态是否开启
代码如下 | |
mysql> SHOW VARIABLES LIKE 'SLOW%'; |
如果"slow_query_log"的值为”ON“,则开启了慢查询日志;如果为”OFF“,则没有开启慢查询日志
说明:其中查询日志和慢查日志都可记录到表里或文件里,也可以二者都有记录。
My.ini配置信息:
代码如下 | |
#Enter a name for the query log file. Otherwise a default name will be used. #log=d:/mysql_log.txt |
五、中继日志
在mysql服务器中从架构中的从服务器上用到的,当从服务器想要和主服务器进行数据的同步时,从服务器将主服务器的二进制日志文件拷贝到己的主机上放在中继日志中,然后调用SQL线程按照拷中继日志文件中的二进制日志文件执行以便就可达到数据的同步。
开启的方法:(只在从服务器上开启)
配置mysql的主配置文件:
relay-log= 指定中继日志的位置和名字
relay-log-index= 指定中继日志的名字的索引文件的位置和名字
My.ini配置信息:
代码如下 | |
#Enter a name for the update log file. Otherwise a default name will be used. #log-update=d:/mysql_log_update.txt |