mysql操作日志怎么查 mysql操作日志查询

mysql怎么收集本地对表的操作记录mysql收集本地对表的操作记录方法如下:
1、进入mysql输入指令showvariableslike'gen%' 。general_log是开启还是关闭状态,以及这个帐号的general_log文件在哪 。
2、在项目中经常需要记录对表的操作日志,写到程序中,这样无形中增加了程序的业务流程,即使采用了面向切面的编程技术 。
如何查看mysql数据库操作记录日志?有时候我们会不小心对一个大表进行了 update,比如说写错了 where 条件......
此时,如果 kill 掉 update 线程,那回滚 undo log 需要不少时间 。如果放置不管,也不知道 update 会持续多久 。
那我们能知道 update 的进度么?
实验
我们先创建一个测试数据库:
快速创建一些数据:
连续执行同样的 SQL 数次,就可以快速构造千万级别的数据:
查看一下总的行数:
我们来释放一个大的 update:
然后另起一个 session,观察 performance_schema 中的信息:
可以看到 , performance_schema 会列出当前 SQL 从引擎获取的行数 。
等 SQL 结束后,我们看一下 update 从引擎总共获取了多少行:
可以看到该 update 从引擎总共获取的行数是表大小的两倍,那我们可以估算:update 的进度 = (rows_examined) / (2 * 表行数)
??小贴士
information_schema.tables 中 , 提供了对表行数的估算,比起使用 select count(1) 的成本低很多,几乎可以忽略不计 。
那么是不是所有的 update,从引擎中获取的行数都会是表大小的两倍呢?这个还是要分情况讨论的,上面的 SQL 更新了主键 , 如果只更新内容而不更新主键呢?我们来试验一下:
等待 update 结束,查看 row_examined,发现其刚好是表大?。?
那我们怎么准确的这个倍数呢?
一种方法是靠经验:update 语句的 where 中会扫描多少行 , 是否修改主键,是否修改唯一键,以这些条件来估算系数 。
另一种方法就是在同样结构的较小的表上试验一下,获取倍数 。
这样,我们就能准确估算一个大型 update 的进度了 。
如何查看mysql运行,访问记录等日志mysql的bin日志要用mysqlbinlog命令来查看 , 假如你的bin日志是mysql-bin.000001,那么你可以如下操作:mysqlbinlogmysql-bin.000001|less
怎样查看本机mysql的详细操作记录如果你想要知道mysqld内部发生了什么,你应该用--log[=file_name]或-l [file_name]选项启动它 。如果没有给定file_name的值, 默认名是host_name.log 。所有连接和语句被记录到日志文件 。当你怀疑在客户端发生了错误并想确切地知道该客户端发送给mysqld的语句时,该日志可能非常有用 。
mysqld按照它接收的顺序记录语句到查询日志 。这可能与执行的顺序不同 。这与更新日志和二进制日志不同,它们在查询执行后,但是任何一个锁释放之前记录日志 。(查询日志还包含所有语句,而二进制日志不包含只查询数据的语句) 。
如何查看mysql数据库操作记录日志是否启用了日志
1
mysqlshow variables like 'log_bin';
怎样知道当前的日志
1
mysql show master status;
看二进制日志文件用mysqlbinlog
shellmysqlbinlog mail-bin.000001(要写绝对问题路径d://)
或者
shellmysqlbinlog mail-bin.000001 | tail
Windows 下用类似的命令 。
mysql有以下几种日志:
错误日志:-log-err
查询日志:-log
慢查询日志:-log-slow-queries
更新日志:-log-update
二进制日志:-log-bin在mysql的安装目录下 , 打开my.ini,在后面加上上面的参数,保存后重启mysql服务就行了 。
Linux系统上记录MYSQL操作的审计日志根据笔者上一篇文章—Linux系统上记录用户操作的审计日志。本文来利用相同的方法记录MYSQL操作的审计日志 。

推荐阅读