我是靠谱客的博主 碧蓝香菇,最近开发中收集的这篇文章主要介绍mysql配置日志_MySQL设置日志输出方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MySQL 的查询日志支持写入到文件或写入数据表两种输出形式。启用了普通查询日志或慢查询日志功能后,可以选择让服务器把日志写入到日志文件、mysql 数据库中的日志表、或者同时写到这两个地方。

可以通过以下命令查看日志输出类型:

mysql> SHOW VARIABLES LIKE '%log_out%';

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

| Variable_name | Value |

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

| log_output | FILE |

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

1 row in set, 1 warning (0.08 sec)

结果显示,日志输出类型为 FILE。

要想在运行时更改日志输出目标,可以在启动服务器时,设置全局系统变量 log_output 的值,格式如下:

SET GLOBAL log_output='value';

value 的值可以是:

FILE:表示把日志写入到文件。如果未指定 log_output 的值,默认为 FILE。

TABLE:表示把日志写入到 mysql 数据库的 slow_log 或 general_log 表中。

MySQL 可以同时支持 2 种日志存储方式,配置的时候以逗号隔开,即 log_output='FILE,TABLE'。

需要注意的是,系统变量 log_output 只确定了日志使用什么输出目标,并不会启用日志功能。

相对于写入到文件,日志写入到数据表中要耗费更多的系统资源。因此,对于需要启用查询日志,又需要获得更高的系统性能,建议优先选择将日志写入到文件。

日志表(slow_log 或 general_log)中的内容只允许查看,不允许修改,除非服务器自己进行更改。因此,你只能对日志表使用 SELECT 语句,不能使用 INSERT、DELETE 或 UPDATE 语句。不过,可以使用 TRUNCATE TABLE 语句来清空日志表。

例 1

首先设置日志写入到日志表,然后查询 test 数据库中 tb_student 数据表的记录,并查看 mysql 数据库中的 slow_log 表中的记录。SQL 语句和运行结果如下:

mysql> SET GLOBAL log_output='TABLE';

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE '%log_out%';

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

| Variable_name | Value |

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

| log_output | TABLE |

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

1 row in set, 1 warning (0.01 sec)

mysql> use test;

Database changed

mysql> SELECT * FROM tb_student;

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

| id | name |

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

| 1 | Java |

| 2 | MySQL |

| 3 | Python |

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

3 rows in set (0.00 sec)

mysql> SELECT * FROM mysql.slow_log G

*************************** 1. row ***************************

start_time: 2020-06-04 15:25:40.030420

user_host: root[root] @ localhost [::1]

query_time: 00:00:00.058887

lock_time: 00:00:00.000000

rows_sent: 0

rows_examined: 0

db: test

last_insert_id: 0

insert_id: 0

server_id: 1

sql_text: TRUNCATE TABLE mysql.slow_log

thread_id: 11

*************************** 2. row ***************************

start_time: 2020-06-04 15:25:52.229014

user_host: root[root] @ localhost [::1]

query_time: 00:00:00.000339

lock_time: 00:00:00.000000

rows_sent: 1

rows_examined: 0

db: test

last_insert_id: 0

insert_id: 0

server_id: 1

sql_text: Init DB

thread_id: 11

*************************** 3. row ***************************

start_time: 2020-06-04 15:26:00.867649

user_host: root[root] @ localhost [::1]

query_time: 00:00:00.000379

lock_time: 00:00:00.000115

rows_sent: 7

rows_examined: 7

db: test

last_insert_id: 0

insert_id: 0

server_id: 1

sql_text: SELECT * FROM tb_student

thread_id: 11

3 rows in set (0.00 sec)

结果显示,超过慢查询日志指定时间的 SQL 语句都写入到了 mysql 数据库的 slow_log 表中。

最后

以上就是碧蓝香菇为你收集整理的mysql配置日志_MySQL设置日志输出方式的全部内容,希望文章能够帮你解决mysql配置日志_MySQL设置日志输出方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部