仅记录 MySQL 查询中的插入、更新和删除操作

9
我正在使用带有phpmyadmin和MySQL 5.0的WAMP服务器。我一直在寻找一种仅记录所有插入、更新和删除查询的方式,但一直没有成功。
我成功地让它自动生成日志,只需将"log=C:\wamp\mysql\log\queries.log"添加到mysql的my.ini配置文件中即可,但该日志未记录确切的查询。
我的目标是,每当发生插入、删除或更新查询时,它都会将查询记录在文件或另一个表中。这是否可以通过程序实现?我有哪些选择?
2个回答

7

这是通过二进制日志(Binary Log)实现的。您可以使用log-bin参数来启用它。
您可以使用mysqlbinlog工具读取二进制日志的内容。


谢谢,这正是我需要的。除了mysqlbinlog之外,还有其他读取日志文件的方法吗?比如,Java可以写/读取二进制文件,它也能正确地读取日志吗? - Arthur
我猜你可以,但是mysqlbinlog有很多解析特性,例如<a href="http://dev.mysql.com/doc/refman/5.0/en/mysqlbinlog.html#option_mysqlbinlog_start-datetime" target="_blank">start-datetime</a>,它可以让你选择要显示的语句的起始日期和时间。 - georgepsarakis
我个人认为mysqlbinlog的输出难以阅读。过滤掉SELECT查询后,阅读通用日志更加有帮助。 - Flimm

2

有一个解决方法。你可以将 tail 命令的输出传递给 grep 命令,例如:

tail -f /var/log/mysql/mysql.log | grep "update "

只有在启用了常规日志的情况下才有效,对吗? - Flimm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接