MySQL设置日志输出方式
2023-06-13 09:12:02 时间
MySQL 的查询日志支持写入到文件或写入数据表两种输出形式。启用了普通查询日志或慢查询日志功能后,可以选择让服务器把日志写入到日志文件、mysql 数据库中的日志表、或者同时写到这两个地方。
MySQL 可以同时支持 2 种日志存储方式,配置的时候以逗号隔开,即 log_output= FILE,TABLE 。
可以通过以下命令查看日志输出类型:
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 的值可以是:
MySQL 可以同时支持 2 种日志存储方式,配置的时候以逗号隔开,即 log_output= FILE,TABLE 。
需要注意的是,系统变量 log_output 只确定了日志使用什么输出目标,并不会启用日志功能。
相对于写入到文件,日志写入到数据表中要耗费更多的系统资源。因此,对于需要启用查询日志,又需要获得更高的系统性能,建议优先选择将日志写入到文件。
日志表(slow_log 或 general_log)中的内容只允许查看,不允许修改,除非服务器自己进行更改。因此,你只能对日志表使用 SELECT 语句,不能使用 INSERT、DELETE 或 UPDATE 语句。不过,可以使用 TRUNCATE TABLE 语句来清空日志表。
首先设置日志写入到日志表,然后查询 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 表中。
23885.html
javamysqlpython相关文章
- MySQL删除日志的正确姿势(mysql删除日志)
- MySQL:查找错误日志路径(mysql错误日志路径)
- MySQL数据库中的触发器机制(mysql数据触发器)
- MySQL服务器自动关闭:避免灾难性后果(mysql服务自动停止)
- MySQL 查看日志:简单易行的操作指南(mysql如何查看日志)
- MySQL结果判断:判断你的行动。(mysql结果判断)
- MySQL: 命令行中的帮助指南(mysql命令行帮助)
- MySQL免安装设置账号密码简易教程(mysql免安装密码)
- 解决MySQL编码问题:小白初探(修改mysql编码)
- MySQL数据:实现更高效的存储技术(mysql数据)
- MySQL 如何在控制台输出信息(mysql输出控制台)
- MySQL导出数据到文件的简单方法(mysql输出到文件)
- 跨国数据同步,MySQL轻松搞定(mysql跨国数据库同步)
- MySQL查看错误日志:一步一步指南(mysql查看错误日志)
- 化备份处理技巧MySQL数据库备份处理实用技巧:格式化是关键(mysql 数据库格式)
- MySQL中的事务日志文件作用和优化方法(mysql中事务日志文件)
- 记录MySQL数据库日志有多大用处(a记录 mysql)
- 解决MySQL数据库程序中使用AS调用问题(as调用mysql)
- MySQL 如何解决无法删除行数据问题(mysql不能删除行数据)
- MYSQL离线使用方法大揭秘不联网也能愉快地使用MySQL(mysql 不联网吗)