大纲
一、日志分类
二、日志详解
注:MySQL版本,Mysql-5.5.32(不同版本的mysql变量有所不同)
一、日志分类
·
错误日志
·
查询日志
·
慢查询日志
·
二进制日志
·
中继日志
·
事务日志
·
滚动日志
二、日志详解
1.错误日志
说明:在对应的数据目录中,以主机名+.err命名的文件,错误日志记录的信息类型:
·
记录了服务器运行中产生的错误信息
·
记录了服务在启动和停止是所产生的信息
·
在从服务器上如果启动了复制进程的时候,复制进程的信息也会被记录
·
记录event错误日志
配置mysql的主配置文件:
1 2 |
log_error log_warning = {0|1} #默认开启,服务器运行中的警告日志也会记录在错误日志中 |
2.查询日志
说明:对除了慢查日志中记录的查询信息都将记录下来,这将对服务器主机产生大量的压力,所以对于繁忙的服务器应该关闭这个日志
与查询日志相关的变量,
1 2 3 4 |
log = {ON|OFF} #是否启用查询日志,该指令在mysq5.6中已废弃
general_log =
general_log_file
log_output = |
3.慢查询日志
说明:默认为关闭状态,记录下来查询时间超过设定时长的查询,这些查询日志将被慢查日志记录下来
配置mysql的主配置文件:
1 2 3 4 5 |
slow_query_log = {ON |
slow_query_log_file log_query_time = 10 #定义默认的时长,默认时长为10秒
log_query_not_using_indexes
log_output = |
4.二进制日志
说明:默认开启,精确的记录了用户对数据库中的数据进行操作的命令和操作的数据对象。
二进制日志文件的作用:
·
提供了增量备份的功能
·
提供了数据基于时间点的恢复,这个恢复的时间点可以由用户控制
·
为mysql的复制架构提供基础,将这主服务器的二进制日志复制到从服务器上并执行同样的操作,就可将数据进行同步
二进制日志格式:
·
基于语句 statement
·
基于行 row
·
混合方式 mixed
二进制日志事件:
·
position 基于位置
·
datetime 基于时间
二进制日志的查看与删除方式:
1 2 3 4 5 |
mysql>show master status; 查看当前正在使用的二进制日志
mysql>show binlog mysql>flush logs; 二进制日志滚动 mysql>show binary logs; 查看所有二进制日志
mysql>purge binary logs |
文件系统中查看二进制日志的命令:
1 2 3 4 5 6 |
mysqlbinlog 相关选项, –start-position #开始位置 –stop-position #结束位置
–start-datetime ‘yyyy-mm-dd –stop-datetime ”; #结束时间 |
配置mysql的主配置文件:
1 2 3 4 5 6 7 8 9 |
sql_log_bin = {ON|OFF} #用于控制二进制日志信息是否记录进日志文件。默认为ON,表示启用记录功能。用户可以在会话级别修改此变量的值,但其必须具有SUPER权限
binlog_cache_size =
binlog_stmt_cache_size = log_bin = mysql-bin #指定binlog的位置,默认在数据目录下 binlog-format = {ROW|STATEMENT|MIXED} #指定二进制日志的类型,默认为MIXED。如果设定了二进制日志的格式,却没有启用二进制日志,则MySQL启动时会产生警告日志信息并记录于错误日志中。 sync_binlog = 10 #设定多久同步一次二进制日志至磁盘文件中,0表示不同步,任何正数值都表示对二进制每多少次写操作之后同步一次。当autocommit的值为1时,每条语句的执行都会引起二进制日志同步,否则,每个事务的提交会引起二进制日志同步
max_binlog_cache_size =
max_binlog_stmt_cache_size =
expire_log_days = |
注:一般建议将binlog日志与数据文件分开存放,不但可以提高mysql性能,还可以增加安全性!
5.中继日志
说明:主要是在mysql服务器的中从架构中的从服务器上用到的,当从服务器想要和主服务器进行数据的同步时,从服务器将主服务器的二进制日志文件拷贝到己的主机上放在中继日志中,然后调用SQL线程按照拷中继日志文件中的二进制日志文件执行以便就可达到数据的同步
开启的方法:(只在从服务器上开启)
配置mysql的主配置文件:
1 2 3 4 5 6 |
relay-log = file_name #指定中继日志的位置和名字,默认为host_name-relay-bin。也可以使用绝对路径,以指定非数据目录来存储中继日志
relay-log-index = file_name
relay-log-info-file = relay_log_purge = {ON|OFF} #设定对不再需要的中继日志是否自动进行清理。默认值为ON
relay_log_space_limit
max_relay_log_size = |
6.事务日志
说明:详细的记录了在什么时间发生了什么时候,在哪个时间对哪些数据进行了改变,能后实现事件的重放,一般只记录对数据进行改变的操作,对于读操作一般不进行记录。
事物日志为数据库服务器实现以下功能:
(1).将随机IO转换为顺序IO,大大的提高了数据库的性能,存储的数据可能存在在磁盘的不同位置,降低了数据的读取和操作性能。转换为顺序IO的原理为,先将数据存放在日志文件中,然后由RDBSM的后台将日志中的数据存放到磁盘上,这样就保证了存储的数据是连续的。
(2).为事件重放提供基础,事务日志详细的记录了时间发生的时间以及操作的数据对象,事务进程可以根据这些信息进行时间重放。
默认的事务日志文件有两个,位于数据目录下以ibdata+number结尾的数字,我们可以对事务日志的位置、文件大小、增长方式进行定义,定义的方法如下:
这里以使用支持事务的Innodb存储引擎为例,
配置mysql的主配置文件:
1 2 3 4 5 6 7 |
innodb_data_home_dir
innodb_data_file_path =
innodb_data_file_path =
innodb_log_group_home_dir
innodb_log_files_in_group =
innodb_log_file_size =
innodb_log_buffer_size = |
7.滚动日志
说明:只要是针对二进制日志进行滚动的,对某个类型的日志文件滚动一次就生成一个新的相对应的日志文件,通过这种方法保证日志文件的特定大小,从而保证服务器在对日志文件查询时有较高的响应能力。
滚动二进制日志的命令:
1 |
mysql> FLUSH LOGS; |
三、总结
通过上面的学习,大家应该对mysql日志管理有所了解,^_^……!