MySQL日志详细解析(7)

查看慢查询日志:
mysql> use mysql
mysql> selectuser,host,password from user where user="root";
+------+------------------+----------+
| user | host            | password |
+------+------------------+----------+
| root |localhost        |          |
| root |linuxidc.magedu.com |          |
| root |127.0.0.1        |          |
| root | ::1              |          |
+------+------------------+----------+
4 rows in set (0.08sec)      #查询时间为0.08
mysql> systemmore /mydata/data/linuxidc_slow.log          #查询慢查询日志记录信息
/usr/local/mysql/bin/mysqld,Version: 5.5.33-log (Source distribution). started
with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                Id Command    Argument
>>>>>>>>>>>>>>>>部分已省略>>>>>>>>>>>>>>
# Time: 13100723:46:33
# User@Host:root[root] @ localhost []
# Query_time:0.108459  Lock_time: 0.000216 Rows_sent:4  Rows_examined: 6
SETtimestamp=1381160793;
selectuser,host,password from user where user="root";

事务日志:
事务日志(InnoDB特有的日志)可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把改修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式相对来说要快得多。事务日志持久以后,内存中被修改的数据在后台可以慢慢的刷回到磁盘。目前大多数的存储引擎都是这样实现的,我们通常称之为预写式日志,修改数据需要写两次磁盘。
如果数据的修改已经记录到事务日志并持久化,但数据本身还没有写回磁盘,此时系统崩溃,存储引擎在重启时能够自动恢复这部分修改的数据。具有的恢复方式则视存储引擎而定。
查看事务日志的定义:
mysql> SHOWGLOBAL VARIABLES LIKE '%log%';
+-----------------------------------------+-----------------------------------+
| Variable_name                          | Value                            |
+-----------------------------------------+-----------------------------------+
| innodb_flush_log_at_trx_commit          | 1        #在事务提交时innodb是否同步日志从缓冲到文件中1表示事务以提交就同步不提交每隔一秒同步一次,性能会很差造成大量的磁盘I/O;定义为2表示只有在事务提交时才会同步但是可能会丢失整个事务      |
|innodb_locks_unsafe_for_binlog          |OFF                              |
| innodb_log_buffer_size                  | 8388608                          |
|innodb_log_file_size                    |5242880                          |
| innodb_log_files_in_group              | 2      #至少有两个                |
|innodb_log_group_home_dir              |./      #定义innodb事务日志组的位置      |
|innodb_mirrored_log_groups              |1    #表示对日志组做镜像          |
每个事务日志都是大小为5兆的文件:
[root@linuxidc data]#ls -lh
-rw-rw---- 1 mysqlmysql 5.0M Oct  7 23:36 ib_logfile0
-rw-rw---- 1 mysqlmysql 5.0M Aug 12 01:06 ib_logfile1

二进制日志:
二进制日志也叫作变更日志,主要用于记录修改数据或有可能引起数据改变的mysql语句,并且记录了语句发生时间、执行时长、操作的数据等等。所以说通过二进制日志可以查询mysql数据库中进行了哪些变化。一般大小体积上限为1G。
二进制开启状态:
mysql> showglobal variables like "%log_bin%";
+---------------------------------+-------+
| Variable_name                  | Value |
+---------------------------------+-------+
| log_bin                        | ON    |  #已开启
|log_bin_trust_function_creators | OFF  |
| sql_log_bin                    | ON    |
+---------------------------------+-------+

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2664cb88d7126d3636e3a9c8cb6894c4.html