7.3 MySQL日志体系

日志类型

事务日志:transaction log

写入类型为“追加”,因此其操作为“顺序IO”,通常被称为:预写式日志;ib_logfile0,ib_logfile1

错误日志:error log

通用日志:general log

慢查询日志:slow query log

二进制日志:binary log

中继日志:relay log,在主从复制架构中,从服务器用于报错从主服务器的二进制日志中读取的事件

事务日志:

事务型存储引擎自行管理和使用,建议和数据文件分开存放,redo log和undo log

innodb事务日志相关配置

show variables like '%innodb_log%';

innodb_log_file_size    50331648    每个日志文件大小

innodb_log_files_in_group    2    日志组成员个数

innodb_log_group_home_dir    ./    事务文件路径

innodb_flush_log_at_trx_commit   默认1

事务日志性能优化

innodb_flush_log_at_trx_commit 0|1|2

0:每秒write os cache &flush 到 磁盘

事务提交时没有写磁盘操作,而是每秒执行一次将日志缓冲区的提交的事务写入刷新到磁盘(这样可提供更好的性能,但服务器崩溃可能丢失最后一秒的事务)

1:默认值,每次事务提交write os cache & flush到磁盘

日志缓冲区将下入日志文件,并在每次事务后执行刷新到磁盘。完全遵守ACID特性

2:每次事务提交write os cache 每秒flush到磁盘

每次提交都会写入os缓冲区,但每秒才会进行一次刷新到磁盘(性能比0略差,但操作系统或停电可能导致最后一秒的交易丢失)

高并发业务行业最佳时间,是使用第三种这种配置(=2)

1.配置为2和0,性能差异并不大,因为将数据从log buffer拷贝到os cache,虽然跨越用户态与内核态,但因为是内存的数据拷贝,速度很快

2.配置为2和0,安全性差异很大,操作系统崩溃的概率相比mysql应用程序崩溃的概率,小很多,设置为2,只要操作系统不崩溃也绝对不会丢数据

错误日志

 mysqld启动和关闭过程中输出的事件信息。

mysqld运行中产生的错误信息。

计划任务(时间调度器)Event Scheduler运行一个event时产生的日志信息。

在主从复制架构中的从服务器上启动从服务器时产生的信息。

错误文件路径:show variables like 'log_error';

设置错误文件警告级别:show variables like 'log_warnings';

log_warings=0|1|2...

通用日志

记录对数据库的通用操作,包括错误的sql语句

通用日志可以保存在:file(默认值)或table(select * from mysql.general_log\G;)

相关设置

general_log=on|off

general_log_file=mysql2.general.log

log_output=table|file|none

查询:show variables like 'general_log';

慢查询日志

记录执行查询时长超过指定时长的操作

相关变量

slow_query_log=on|off

long_query_time=n

slow_query_log_file=hostname-slow.log

log_queries_not_using_indexes=on  不使用索引,不论是否达到慢查询阈值的语句都记录,默认off不记录

查询:show variables like '%query_log%';

工具查询:mysqldumpslow mysql2-slow.log

posted @ 2022-07-18 15:36  胖丿虎  阅读(24)  评论(0编辑  收藏  举报