查看mysql日志:
mysql> show global variables like '%log%';
mysql日志文件分为6种:
1.错误日志:记录启动、运行或停止时出现的问题,一般也会记录警告日志
2.一般查询日志:记录建立的客户端链接和执行的语句
3.慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询,可以帮我们定位服务器性能问题
4.二进制日志:任何引起或可能引起数据库变化的操作,主要用于备份和即时点恢复
5.中继日志:复制主服务器的二进制日志,并保存为日志文件
6.事务日志:记录InnoDB等支持事务的存储引擎执行事务时产生的日志
1,错误日志
错误日志主要记录如下几种日志:
———–> 服务器启动和关闭过程中的信息
———–> 服务器运行过程中的错误信息
———–> 事件调度器运行一个事件时产生的信息
———–> 在从服务器上启动从服务器进程时产生的信息
错误日志定义:
可以用–log-error [ = file_name ]选项来指定mysqld保存错误日志文件的位置。如果没有给定file_name值,mysqld使用错误日志名host_name.err 并在数据目录中写入日志文件。如果你执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。(如果未给出–log-error选项,则不会重新命名)。
错误日志一般有以上两个变量可以定义:
错误日志文件:log_error
启用警告信息:log_warnings (默认启用)
mysql> show global variables like 'log_error';
mysql> show global variables like 'log_warnings';
启动开关:general_log={ON|OFF}
日志文件变量:general_log_file [ =/PATH/TO/file]
全局日志开关:log={ON|OFF} 该开关打开后,所有日志都会被启用
记录类型:log_output={TABLE|FILE|NONE}
log_output定义了日志的输出格式,可以是表,文件,若设置为NONE,则不启用日志,因此,要启用通用查询日志,需要至少配置general_log=ON,log_output={TABLE|FILE}。而general_log_file如果没有指定,默认名是host_name.log。由于一般查询使用量比较大,启用写入日志文件,服务器的I/O操作较多,会大大降低服务器的性能,所以默认为关闭的。
mysql> show global variables like 'general_log';
mysql> show global variables like'general_log_file';
可以使用以下命令开启general_log:
mysql> set global general_log=1;
mysql> show global variables like 'general_log';
3、慢查询日志
查询超时时间:long_query_time
启动慢查日志:log_slow_queries={YES|NO}
启动慢查日志 : slow_query_log
日志记录文件:slow_query_log_file [= file_name ]
MySQL如果启用了slow_query_log=ON选项,就会记录执行时间超过long_query_time的查询(初使表锁定的时间不算作执行时间)。日志记录文件如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。
mysql> show global variables like '%slow_query_log%';
4,二进制日志
二进制日志启动开关:log-bin [= file_name]
在5.6及以上版本一定要手动指定。5.6以下版本默认file_name为$datadir/mysqld-binlog,二进制日志用于记录所有更改数据的语句,主要用于复制和即时点恢复。二进制日志的主要目的是在数据库存在故障时,恢复时能够最大可能地更新数据库(即时点恢复),因为二进制日志包含备份后进行的所有更新,二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。
查看二进制日志的工具为:mysqlbinlog
二进制日志的格式:
——> 基于语句: statement
——> 基于行: row
——> 混合方式: mixed
由于基于语句和基于行的日志格式都有自己的好处,MySQL使用的二进制日志文件是混合方式的二进制日志,内置策略会自动选择最佳的格式。
二进制日志事件:
——> 产生的时间:starttime
——> 相对位置:position
二进制日志文件:
——> 索引文件
——> 二进制日志文件
在数据目录下有一个mysql-bin.index便是索引文件,以mysql-bin开头并以数字结尾的文件为二进制日志文件。
日志的滚动:
MySQL的滚动方式与其他日志不太一样,滚动时会创建一个新的编号大1的日志用于记录最新的日志,而原日志名字不会被改变。每次重启MySQL服务,日志都会自动滚动一次。
mysql> flush logs;
mysql> show master status; ####查看当前正在使用的二进制文件
mysql> show binary logs; ####查看所有的二进制文件
使用命令mysqlbinlog查看二进制日志内容:
基本语法:
mysqlbinlog [options] log-files
常用options(类似字节偏移数):
--start-position :开始位置
--stop-position :结束位置
--start-datetime 'yyyy-mm-dd hh:mm:ss' :开始时间
--stop-datetime 'yyyy-mm-dd hh:mm:ss' :结束时间
6,事务日志
事务性存储引擎用于保证(ACID)原子性、一致性、隔离性和持久性;其不会立即写到数据文件中,而是写到事务日志中。
innodb_flush_log_at_trx_commit:
———–> 0: 每秒同步,并执行磁盘flush操作;
———–> 1:每事务同步,并执行磁盘flush操作;
———–> 2: 每事务同步,但不执行磁盘flush操作;
mysql> show global variables like 'innodb_flush_log_at_trx_commit';