CRUD工程师——日志

mysql日志的种类,一般来说,日志有五种,分别为: 错误日志:-log-err (记录启动,运行,停止mysql时出现的信息) 二进制日志:-log-bin (记录所有更改数据的语句,还用于复制,恢复数据库用) 查询日志:-log (记录建立的客户端连接和执行的语句) 慢查询日志: -log-slow-queries (记录所有执行超过long_query_time秒的所有查询) 更新日志: -log-update (二进制日志已经代替了老的更新日志,更新日志在MySQL 5.1中不再使用)

 错误日志:

在MySQL数据库中,错误日志功能是默认开启的,而且无法被关闭。默认情况,错误日志存储在mysql数据库的数据文件中。错误日志文件通常的名称为hostname.err(hostname表示服务器的主机名)。

错误日志可以自己配置,错误日志可以通过log-error和log-warnings来定义,其中log-error:配置是否启用错误日志功能和错误日志的存储位置?log-warning:配置是否将警告信息也定义至错误日志中?

错误日志记录信息:服务器启动关闭信息、运行错误信息、时间调度器运行一个事件时产生的信息、在服务器上启动进程产生的信息。

查询日志:

默认情况,查询日志是关闭的。因为查询日志会记录用户所有的操作,其中还包括增删改查等信息,如果在高并发的环境下会产生大量的信息,导致不必要的磁盘IO,会影响mysql的性能。

慢日志:

慢查询日志是用来记录执行时间超过指定时间的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化。一般建议开启,它对服务器性能影响很小,但是可以记录MySQL服务器上执行很长时间的查询语句。可以帮助我们定义性能问题。

事务日志:

事务日志(InnoDB特有的日志)可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把改修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式相对来说要快得多。事务日志持久以后,内存中被修改的数据在后台可以慢慢的刷回到磁盘。目前大多数的存储引擎都是这样实现的,我们通常称之为预写式日志,修改数据需要写两次磁盘。如果数据的修改已经记录到事务日志并持久化,但数据本身还没有写回磁盘,此时系统崩溃,存储引擎在重启时能够自动恢复这部分修改的数据。具有的恢复方式则视存储引擎而定。

 二进制日志:

二进制日志也叫作变更日志,主要用于记录修改数据或有可能引起数据改变的mysql语句,并且记录了语句发生时间、执行时长、操作的数据等等。所以说通过二进制日志可以查询mysql数据库中进行了哪些变化。一般大小体积上限为1G。


查看日志功能状态

mysql>show variables like 'log%';(是否启用了日志)
mysql> show master status;(怎样知道当前的日志)
mysql> show master logs;(显示二进制日志的数目)
MySQL的查询日志记录了所有MySQL数据库请求的信息。无论这些请求是否得到了正确的执行。默认情况下MySQL查询日志是关闭的。生产环境,如果开启MySQL查询日志,对性能还是有蛮大的影响的。另外很多时候,MySQL慢查询日志基本可以定位那些出现性能问题的SQL,它跟SQL Server中的profiler有点类似,但是这个不能跟踪某个会话、用户、客户端。它只能对整个数据库进行跟踪。 一般在我目前的使用中,使用慢查询日志比较多。
mysql> show global variables like '%log%';
+-----------------------------------------+--------------------------------+
| Variable_name                           | Value                          |
+-----------------------------------------+--------------------------------+
| back_log                                | 250                            |
| binlog_cache_size                       | 32768                          |
| binlog_checksum                         | CRC32                          |
| binlog_direct_non_transactional_updates | OFF                            |
| binlog_error_action                     | IGNORE_ERROR                   |
| binlog_format                           | STATEMENT                      |
| binlog_gtid_simple_recovery             | OFF                            |
| binlog_max_flush_queue_time             | 0                              |
| binlog_order_commits                    | ON                             |
| binlog_row_image                        | FULL                           |
| binlog_rows_query_log_events            | OFF                            |
| binlog_stmt_cache_size                  | 32768                          |
| binlogging_impossible_mode              | IGNORE_ERROR                   |
| expire_logs_days                        | 0                              |
| general_log                             | OFF                            |
| general_log_file                        | /var/lib/mysql/kafka2.log      |
| innodb_api_enable_binlog                | OFF                            |
| innodb_flush_log_at_timeout             | 1                              |
| innodb_flush_log_at_trx_commit          | 2                              | ===>【事务日志】详解[1]
| innodb_locks_unsafe_for_binlog          | OFF                            |
| innodb_log_buffer_size                  | 33554432                       |
| innodb_log_compressed_pages             | ON                             |
| innodb_log_file_size                    | 536870912                      |
| innodb_log_files_in_group               | 2                              | ===>【事务日志】至少2个
| innodb_log_group_home_dir               | ./                             | ===>【事务日志】定义innodb事务日志组的文件目录
| innodb_mirrored_log_groups              | 1                              | ===>【事务日志】表示对日志组做镜像
| innodb_online_alter_log_max_size        | 134217728                      |
| innodb_undo_logs                        | 128                            |
| log_bin                                 | OFF                            |
| log_bin_basename                        |                                |
| log_bin_index                           |                                |
| log_bin_trust_function_creators         | OFF                            |
| log_bin_use_v1_row_events               | OFF                            |
| log_error                               | ./kafka2.err                   | ===>【错误日志】错误日志输出目录以及错误日志文件名
| log_output                              | FILE                           |
| log_queries_not_using_indexes           | OFF                            |
| log_slave_updates                       | OFF                            |
| log_slow_admin_statements               | OFF                            |
| log_slow_slave_statements               | OFF                            |
| log_throttle_queries_not_using_indexes  | 0                              |
| log_warnings                            | 1                              | ===>【错误日志】是否把警告信息添加进错误日志中 
| max_binlog_cache_size                   | 18446744073709547520           |
| max_binlog_size                         | 1073741824                     |
| max_binlog_stmt_cache_size              | 18446744073709547520           |
| max_relay_log_size                      | 0                              |
| relay_log                               |                                |
| relay_log_basename                      |                                |
| relay_log_index                         |                                |
| relay_log_info_file                     | relay-log.info                 |
| relay_log_info_repository               | FILE                           |
| relay_log_purge                         | ON                             |
| relay_log_recovery                      | OFF                            |
| relay_log_space_limit                   | 0                              |
| simplified_binlog_gtid_recovery         | OFF                            |
| slow_query_log                          | OFF                            | ===>【慢日志】查看慢日志是否开启
| slow_query_log_file                     | /var/lib/mysql/kafka2-slow.log | ===>【慢日志】查看慢日志的文件目录以及文件名
| sql_log_bin                             | ON                             |
| sql_log_off                             | OFF                            |
| sync_binlog                             | 0                              |
| sync_relay_log                          | 10000                          |
| sync_relay_log_info                     | 10000                          |
+-----------------------------------------+--------------------------------+
61 rows in set (0.00 sec)

 

上一篇:解决微信端页面文件被缓存


下一篇:MongoDB数据库配置文件详解