我面临着记录LAMP(Debian / PHP / MySQL)站点的数据库活动的问题。
这很复杂,因为我希望每个查询都记录在用户启动它们的上下文中,让我们知道,“谁做了什么”。我承认不太了解MySQL的日志记录功能,但我在查找有关我特定场景的信息时遇到了问题。
现在我们已经实现了mysql_query()
替换(我知道,我知道,代码重写与PDO和准备好的语句正在进行中!)执行查询并使用{ {1}}在日志表中。
问题是,正如人们可以轻易预测的那样,日志表达到了数百万行,其中最老的行是无用的。其他问题是,对于每个需要的查询,执行两个查询。部分解决方案不是记录INSERT DELAYED
s。
另一个解决方案是使用花哨的日志轮换和gzipping和东西登录文本文件。但是如何知道运行查询的用户上下文呢?
是否有人实施了一个成功的查询记录器,该记录器还记录了已记录的用户并且具有性能感知功能?
答案 0 :(得分:2)
这是一个权衡。如果要记录用户活动,则会占用大量空间,并使用更多处理。
我亲自记录PHP文件的所有HTTP请求(包括GET,POST,COOKIE等),而不是SQL查询。但这仍然导致数百万行。我也永远保留它们,因为硬盘空间通常很便宜。当我需要进行审核时,它可能很慢,但我不需要经常审核。
写入文件只会使分析变得更加困难,并且您仍然会在每次请求时处理额外的IO。
如果空间有问题,您可以运行一个cron作业来删除超过X时间的所有行。