MySQL日志管理(一)
MySQL的日志
MySQL的日志分为事务日志、错误日志、通用日志、慢查询日志、以及二进制日志,此处主要讲解前4种日志的配置及使用方法。二进制日志将在下一节中单独讲解。
事务日志(transaction log)
事务日志默认的存放位置为MySQL的数据库目录下的ib_logfile0、ib_logfile1
生产环境中建议将事务日志存放在单独的分区中,防止产生IO的争用。
Innodb事务日志相关配置:
1 | #innodb事务日志相关配置可以使用以下命令进行查看 |
innodb_flush_log_at_trx_commit
0: 提交时没有任何操作; 而是每秒执行一次日志缓冲区写入和刷新。这样可以提供更好的性能,但服务器崩溃可以清除最后一秒的事务
1: 默认情况下,日志缓冲区将写入日志文件,并在每次事务后执行刷新到磁盘。这是完全遵守ACID特性
2: 每次提交后都会写入日志缓冲区,但每秒都会进行一次刷新。性能比0略好一些,但操作系统或停电可能导致最后一秒的交易丢失
3: 模拟MariaDB 5.5组提交(每组提交3个同步),此项MariaDB 10.0支持
此参数修改方法/etc/my.cnf文件中进行修改。
事务日志和数据分开存放
在生产中建议将事务日志存放到一个独立的分区中,带来的好处是性能更优。如果事务日志和数据库存放在一个磁盘上,既要写数据库又要写事务日志,这时候两个写操作都往同一磁盘内写数据必然会涉及到IO争用问题。如果将其存放到不同的磁盘上,这时候数据库和事务日志各写各的,理论上效率更高。
1.创建事务日志目录
1 | [root@localhost ~]# mkdir /data/tlog |
2.修改配置文件指定事务日志的存放位置
1 | [root@localhost ~]# vim /etc/my.cnf |
3.重启MySQL服务
1 | [root@localhost ~]# service mysqld restart |
错误日志
mysqld启动和关闭过程中输出的事件信息
mysqld运行中产生的错误信息
event scheduler运行一个event时产生的日志信息
在主从复制架构中的从服务器上启动从服务器线程时产生的信息
错误日志相关配置:
1 | log_error=/PATH/TO/LOG_ERROR_FILE #错误日志的存放位置 |
通用日志
通用日志:记录对数据库的通用操作,包括错误的SQL语句,数据库的通用日志默认没有启用。
通用日志相关设置,在配置文件中修改
1 | #在配置文件/etc/my.cnf中添加以下三行信息即可开启通用日志 |
慢查询日志
慢查询日志:记录执行查询时长超出指定时长的操作,其配置在配置文件中进行修改
慢查询日志相关配置:
1 | slow_query_log=ON|OFF #开启或关闭慢查询 |