因此,我正在从事的项目之一要求我们获取服务器上运行的每个查询,并将该查询自动粘贴到数据库内的表中。这样做的原因是 DBA 能够查看之前在机器上运行的所有 SQL 查询。不幸的是,我没有任何余地以不同的方式执行此操作,因为客户需要此实现。
是否有人以前做过此操作,或者有任何我可以使用的代码来自动执行此操作?谢谢。
最佳答案
小心!如果您对执行的每个操作都执行 INSERT
,那么您将需要为该 INSERT
执行 INSERT
,此时,您将 .. .
也就是说,第一个记录的查询将挂起服务器并填满磁盘!
不要按照要求的方式执行任务,而是打开“常规日志”并定期将其中的内容抓取到另一台机器上,而该机器没有此日志记录已打开。
反对该任务的其他论据......
- 如果表有
TRIGGER
,您将无法添加另一个TRIGGER
。 - 如果“每个查询”确实意味着“每个”,则不可能(使用
TRIGGER
),因为您无法编写SELECT
或SHOW
触发器。
“因为客户端需要此实现”。我会通过礼貌地找出真正目标来解决这个不合理约束。他仅描述了一个实现。
如果他的目标是某种审核日志,那么我关于通用日志的建议应该足够了。
关于用于进行 Ran 查询并粘贴到行中的 MySQL/MariaDB 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29854449/