MySQL- 日志管理

日志
事务日志 transaction log
错误日志 error log
通用日志 general log
慢查询日志 slow query log
二进制日志 binary log
中继日志 reley log

事务日志:建议将事务日志分离存储,对数据库的增删改查,提交的和未提交的事务依赖于存储引擎
事务日志相关:
mysql> show variables like '%innodb_log%';
+-------------------------------+------------+
| Variable_name | Value |
+-------------------------------+------------+
| innodb_log_arch_dir | |
| innodb_log_arch_expire_sec | 0 |
| innodb_log_archive | OFF |
| innodb_log_block_size | 0 |
| innodb_log_buffer_size | 16777216 |
| innodb_log_checksum_algorithm | DEPRECATED |
| innodb_log_checksums | ON |
| innodb_log_compressed_pages | ON |
| innodb_log_file_size | 50331648 | 日志文件大小
| innodb_log_files_in_group | 2 | 日志文件个数
| innodb_log_group_home_dir | ./ | 默认目录
| innodb_log_optimize_ddl | ON |
| innodb_log_write_ahead_size | 8192 |
+-------------------------------+------------+
另外一个非常重要的变量:innodb_flush_log_at_trx_commit
1默认情况下,日志缓冲区将写入日志文件,并在每次事务后执行刷新到磁盘。 这是完全遵守ACID特性
0提交时没有任何操作; 而是每秒执行一次日志缓冲区写入和刷新。 这样可以提供更好的性能,但服务器崩溃可以清除最后一秒的事务
2每次提交后都会写入日志缓冲区,但每秒都会进行一次刷新。 性能比0略好一些,但操作系统或停电可能导致最后一秒的交易丢失
3模拟MariaDB 5.5组提交(每组提交3个同步),此项MariaDB 10.0支持

错误日志:有时候服务起不来可以看看这个日志
变量:log-error
mysql> show variables like '%log_error%';
+---------------+------------------------------+
| Variable_name | Value |
+---------------+------------------------------+
| log_error | /data/mysql/6.magedu.com.err |
+---------------+------------------------------+
1 row in set (0.00 sec)

通用日志:默认是没有的,记录所有对数据库的操作
变量:genera_log
mysql> show variables like 'general_log%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| general_log | OFF |
| general_log_file | 6.log |
+------------------+-------+
变量:log_output
将通用日志存放在表中(mysql.general_log)

慢查询日志:用于优化查询
变量:slow_query_log
mysql> show variables like '%slow_query_log%';
+---------------------+------------+
| Variable_name | Value |
+---------------------+------------+
| slow_query_log | OFF |
| slow_query_log_file | 6-slow.log |
+---------------------+------------+
建议开启,开启后自动产生slow.log
怎么样的查询叫慢?
变量:long_query_time
mysql> show variables like '%long_query%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 | 默认10s,太长了
+-----------------+-----------+
变量:
log_slow_filter:慢查询过滤条件
mysql> show variables like '%log_slow_filter%';
+-----------------+--------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+-----------------+--------------------------------------------------------------------------------------------------------------+
| log_slow_filter | admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |
+-----------------+--------------------------------------------------------------------------------------------------------------+
↑↑↑上述查询类型且查询时长超过long_query_time,则记录日志↑↑↑
一些其他慢查询相关:

猜你喜欢

转载自blog.51cto.com/13182370/2388913
今日推荐