mysql日志生成的过程_MySQL日志文件

本文详细介绍了MySQL的日志系统,包括错误日志(记录启动、运行、关闭过程及警告信息)、慢查询日志(记录运行时间超过阈值的SQL)和查询日志(记录所有请求信息)。通过设置log_output参数,可将慢查询日志输出至TABLE。同时,讨论了二进制日志在远程复制和数据恢复中的关键作用。
摘要由CSDN通过智能技术生成

MySQL日志文件

日志文件记录了影响MySQL数据库的各种类型活动,MySQL数据库中常见的日志文件有错误日志、二进制日志、慢查询日志。

这些日志文件为DBA对数据库优化、问题查找带来了极大的便利。

日志的输出格式

参数log_output指定了慢查询输出的格式,默认为FILE,你可以设置为TABLE,然后就可以在mysql架构下查询相关的表了。

"日志输出方式"

mysql> show variables like 'log_output%';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_output | FILE |

+---------------+-------+

1 row in set (0.00 sec)

"更改为TABLE"

mysql> set global log_output='TABLE';

Query OK, 0 rows affected (0.00 sec)

"输出内容"

mysql> select event_time,user_host,argument from general_log;

+---------------------+---------------------------+--------------------------------------------------------+

| event_time | user_host | argument |

+---------------------+---------------------------+--------------------------------------------------------+

| 2016-09-30 14:36:36 | root[root] @ localhost [] | show variables like 'log_output%' |

| 2016-09-30 14:37:17 | root[root] @ localhost [] | show tables |

| 2016-09-30 14:37:29 | root[root] @ localhost [] | select * from general_log |

| 2016-09-30 14:37:36 | root[root] @ localhost [] | select * from general_log |

| 2016-09-30 14:38:03 | root[root] @ localhost [] | select * from general_log |

| 2016-09-30 14:38:30 | root[root] @ localhost [] | select event_time,user_host,argument from general_log |

+---------------------+---------------------------+--------------------------------------------------------+

MySQL启动/停止/重启方式

一、启动

使用 service 启动:service mysqld start

使用 mysqld 脚本启动:/etc/inint.d/mysqld start

使用 mysqld_safe 启动:mysqld_safe&

二、停止

使用 service 启动:service mysqld stop

使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

mysqladmin shutdown

三、重启

使用 service 启动:service mysqld restart

使用 mysqld 脚本启动:/etc/inint.d/mysqld restart

1.错误日志

错误日志文件对MySQL的启动、运行、关闭过程进行了记录。MySQL DBA在遇到问题时应该首先查看该文件。该文件不但记录了出错信息,也记录一些警告信息或者正确的信息。

"通过 show variables like log_error来定位该文件"

mysql> show variables like 'log_error';

+---------------+------------------------+

| Variable_name | Value |

+---------------+------------------------+

| log_error | /var/log/mysql/err.log |

+---------------+------------------------+

1 row in set (0.00 sec)

"文件内容"

160930 14:00:57 [Note] Event Scheduler: Killing the scheduler thread, thread id 1

160930 14:00:57 [Note] Event Scheduler: Waiting for the scheduler thread to reply

160930 14:00:57 [Note] Event Scheduler: Stopped

160930 14:00:57 [Note] Event Scheduler: Purging the queue. 9 events

160930 14:00:57 InnoDB: Starting shutdown...

160930 14:00:58 InnoDB: Shutdown completed; log sequence number 892930378

160930 14:00:58 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

2.慢查询日志

设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询日志文件中。

默认情况下,MySQL数据库并不启动慢查询日志,你需要手工将这个参数设为ON

"记录慢查询的时间阈值"

mysql> show variables like '%long%'

-> ;

+---------------------------------------------------+----------+

| Variable_name | Value |

+---------------------------------------------------+----------+

| long_query_time | 0.001000 |

+---------------------------------------------------+----------+

3 rows in set (0.05 sec)

2."查询慢查询日志是否开启"

mysql> show variables like 'log_slow_queries';

+------------------+-------+

| Variable_name | Value |

+------------------+-------+

| log_slow_queries | OFF |

+------------------+-------+

1 row in set (0.02 sec)

3."如果运行的SQL没有索引,慢查询日志是否记录"

mysql> show variables like 'log_queries_not_using_indexes';

+-------------------------------+-------+

| Variable_name | Value |

+-------------------------------+-------+

| log_queries_not_using_indexes | OFF |

+-------------------------------+-------+

1 row in set (0.00 sec)

4."更改设置"

mysql> set global log_slow_queries='ON'

-> ;

Query OK, 0 rows affected, 1 warning (0.05 sec)

3.查询日志

查询日志记录了所有对MySQL数据库请求的信息,不论这些请求是否得到了正确的执行。

"打开查询日志"

mysql> set global general_log='on';

Query OK, 0 rows affected (0.00 sec)

"日志所在位置"

mysql> show variables like 'general%';

+------------------+-------------------------------------+

| Variable_name | Value |

+------------------+-------------------------------------+

| general_log | ON |

| general_log_file | /usr/local/mysql/data/localhost.log |

+------------------+-------------------------------------+

"文件内容"

mysql> system more /usr/local/mysql/data/localhost.log ;

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time Id Command Argument

160930 14:25:15 3 Query show variables like 'general%'

160930 14:25:31 3 Query select * from general_log

160930 14:25:33 3 Query select * from general_log

160930 14:25:34 3 Query select * from general_log

160930 14:25:35 3 Query select * from general_log

160930 14:25:36 3 Query select * from general_log

4.二进制日志

二进制日志包含例如创建表、表数据更改等数据库更改信息。也包含一些潜在可能修改的事件(比如一个delete命令,但没有数据被删除)。

二进制日志也会包含数据更新的时长。

二进制日志文件有两个重要的作用:

1.远程复制

可以通过主机上的二进制日志文件,将数据更改同步到备机。

2.数据恢复

某些数据恢复操作需要用到二进制日志文件

恢复历史备份后,可以使用二进制文件重新执行备份后所做的操作,达到完全恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值