我只想将查询记录到一个表中。
我发现这些
SET GLOBAL log_output = "FILE"; which is set by default.
SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
但是这会记录所有查询。
SO 上存在一些问题,但它们是关于总体记录的。
我只想将查询记录到一个表中。
我发现这些
SET GLOBAL log_output = "FILE"; which is set by default.
SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
但是这会记录所有查询。
SO 上存在一些问题,但它们是关于总体记录的。
如果您想要记录给定表的所有活动(选择/插入/更新/删除),您别无选择,只能记录所有内容。
如果您只想记录对表所做的修改(插入/更新/删除),您可以启用复制主 binlog 并将其限制为所需的表:
当然,您必须使用
mysqlbinlog
实用程序来解码 binlog。进一步阅读:https://dev.mysql.com/doc/refman/8.4/en/replication-options-replica.html#option_mysqld_replicate-do-table
您不能将通用日志或慢速日志专用于单个表。
以下是一个建议:设置查询摘要
可以不使用慢速日志来设置查询摘要。怎样做?
您可以安装pt-query-digest并让其检查 MySQL 进程列表
您可以每小时运行一次pt-query-digest,然后读取每个查询的查询摘要标头并查找想要针对 SELECT、INSERT、UPDATE 和 DELETE 进行分析的表。
以下是一些使用pt-query-digest的过去帖子
Dec 28, 2011
:是否有类似微软针对 MySQL 的“SQL Server Profiler”的工具?Nov 24, 2011
:MySQL 通用查询日志性能影响多年来我曾多次提出这个建议