如何查看mysql数据库操作记录日志

说白了,检查查看MySQL二进制日志只有三个步骤,但一路上却有很多陷阱。

首先让我告诉你最重要的事情。
您需要自己检查系统变量以查看是否启用了日志记录: mysql> show Variables like 'log_bin';这句话。
去年我们做一个合并项目的时候,新人自己看了一下配置文件。
结果变量发生了变化,不再符合实际状态,让很长一段时间的工作都白费了。
另外需要注意的是,当该变量为ON时,文件位置默认为/var/lib/mysql/(Linux)或固定在安装目录中的data下。
但是,在 Windows 上,这可能会因您的具体配置而异。
很多人不重视这一点。
还有另一个关键细节。
使用mysql显示master状态检查时,Bin log file和Position这两个字段是关键。
它告诉您哪些文件当前写入哪个位置。

一开始我以为用mysqlbinlog就可以了,后来发现我错了。
要准确查看特定任务的日志,您需要获取 --start-position 和 --stop-position。
否则一切都会被扭曲。
等等,还有一件事。
默认情况下,二进制日志会定期被覆盖,所以备份一定要及时,避免出现前面一个小延迟导致整个后面崩溃的“雪崩效应”情况。

我们建议您首先使用 mysqlbinlog --help 熟悉这些参数。
这个工具的功能超乎你的想象。
例如|要过滤特定 SQL,请 grep 'INSERT INTO'。
如果你从事运维工作,闭着眼睛也可以使用。

mysql日志文件在哪

日志路径请参见配置文件。
如果配置文件中没有写,则使用默认的。
默认路径取决于系统版本。
权限不足,无法打开该文件。
将变量显示为“general_log_file”;这句话可以找到。
例如,/var/log/mysql/mysql.log。
你自己掂量一下吧。

如何查看MySQL数据库的死锁日志

嘿,我必须告诉你这件事。
去年,我在上海,帮朋友修复了几次MySQL死键。
这件事实在是让人头疼。

这里,要查看MySQL锁日志,通常有以下步骤:
1 .首先,转到终端或命令提示符。
键入命令:mysql -hxxxx.xxx.xxx -P3 3 06 -uusername -p。
这里 xxxx.xxx.xxx 是你的数据库服务器的 IP,username 是你用来登录数据库的用户名。
输入命令后,它会要求您输入密码。
输入正确的话就可以输入了。
2 、登录后,在MySQL客户端中输入命令:show engine innodb status\G ;。
此命令打印 InnoDB 存储引擎的详细状态,包括延迟信息。
注意\G,这会让你看到更漂亮的格式化输出。
3 . 关键来了。
在该结果堆中,您应该查找“LAST DEADLOCK DEADLOCK”块。
去年我帮朋友看的时候,他直接指着那一段说:“这里有一个结点!”我有。
此部分告诉您系统发现的最后关闭状态。
4 . 原因分析见下文。
经常会有类似你提到的信息。
参见示例: 事务1 ,正在等待某个位置的X锁(spaceid5 5 3 pageno3 7 6 nbits3 6 8 index,这些东西看起来很复杂,别担心,它会告诉你位置)。
你是什​​么意思?也就是说,事务1 想要锁定该位置的记录,但找不到它。
同时,事务 2 已经在该位置持有 S 锁。
S锁是共享锁,事务2 假设使用了它。
但是,事务2 在事务1 占用的空间上维护着X锁。
X锁是一种特殊的锁,其他人无法触及。
理论上,事务2 获取锁X后可以提交,但问题是它拿不到,因为它想要的锁被事务1 持有。
同时,它想要事务1 的锁也被事务持有。
去年那位朋友因为两笔交易互相持有锁而崩溃了。
在知道如何解决之前,你需要了解双方的需求,例如应该先处理哪笔交易添加或添加锁定序列。

但是,有时这个延迟信息可能不是很完整,特别是对于一些模糊的依赖项。
有时仅查看最后打印的位是不够的。
我当时不敢乱说。
我应该更仔细地检查或者必须获得更高级的工具来帮助分析。
总之,显示引擎innodb状态是最常用的方法,基本就够用了。