MySQL查看bin_log日志
有这样一段业务逻辑,首先保存业务数据,然后发送报文,最后确认报文回来以后更新业务数据。伪代码大概是这样的:
/**
* 保存数据,并调用发送报文方法
*/
public void save() {
// 0.保存数据
// 调用send()方法
send();
}
/**
* 发送报文
*/
public void send() {
// 1.发送报文(调用Dubbo服务)
// 2.更新数据状态
}
/**
* 回调
*/
public void callback() {
// 3.收到确认报文
// 4.查询业务数据,并更新数据状态
}
然而,出问题了。。。
在回调方法中,根据业务单号查询业务单数据时查不到。这刚插入的数据,怎么就查不到呢?
首先排除了MyBatis-Plus的问题,因为代码写法肯定是没有问题的,然后我想有可能是确认报文回来太快了,导致查询的时候插入还没完成,但是细想之下又觉得不太对,在发送报文之前数据已经保存成功了。于是,问题变成了数据保存成功,但是查不到,应该是事务的问题,即保存成功了,但是还没提交,而隔离级别又是“可重复读”,所以在回调处理的时候查不到未提交的数据。但是我没有加事务。
带着疑问,我查看了bin-log日志,这里需要用到mysqlbinlog命令

mysqlbinlog --help
mysqlbinlog --database=draft_cust --start-datetime="2024-01-29 11:00:34" --stop-datetime="2024-01-29 11:00:37" -v D:\mysql-bin.000005



仔细找BEGIN ... COMMIT ,看看事务到底什么时候开启的,什么时候提交的
虽然BinLog日志里面不记录SELECT,但是结合服务端的日志,我发现在执行回调方法查询业务数据的时候,这个事务还没有提交
真相大白了
但是明明没有加事务,为何到现在才提交事务呢?原来是别人调用我的这个方法,但是调用的方法上加了本地事务,所以导致我这段逻辑也整个都在事务中,也就是直到send()方法执行完以后事务才提交,好巧不巧的是发报文是调用远程Dubbo服务,相当于是异步调用,不受本地事务控制,所以才出现了开头那一幕,回调方法先回来,此时send()方法还没执行完,事务没提交,自然也就查不到
唉。。。
MySQL查看bin_log日志的更多相关文章
- mysql 查看 删除 日志操作总结(包括单独和主从mysql)
我们可以在mysql的安装目录下看到mysql的二进制日志文件,如mysql-bin.000***等,很多人都不及时的处理,导致整个硬盘被塞满也是有可能的.这些是数据库的操作日志.它记录了我们平时使用 ...
- MySQL | 查看log日志
1. 进入mysql mysql -u用户名 -p密码 2. 开启日志 et global general_log=on: 3. 查看mysql日志文件的路径 show variables like ...
- mysql查看binlog日志
1.语法:(用于在二进制日志中显示事件.如果您不指定’log_name’,则显示第一个二进制日志.LIMIT子句和SELECT语句具有相同的语法.) show binlog events [IN 'l ...
- 登录到mysql查看binlog日志
查看当前第一个binlog文件的内容 show binlog events; 查看指定binlog文件内容 show binlog events in 'mysql-bin.000002'; 查看当前 ...
- mysql查看bin日志命令
mysqlbinlog --no-defaults --base64-output=decode-rows -v --start-datetime='2016-01-14 16:30:00' - ...
- 解说mysql之binlog日志以及利用binlog日志恢复数据
众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 一 ...
- 【转】Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...
- mysql通过查看跟踪日志跟踪执行的sql语句
在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢? 其实方法很简单,开启mysql的日志log功能,通过查看跟踪日志即可. 开启mysql的日志log方法: wind ...
- 开启mysql慢查询日志并使用mysqldumpslow命令查看
mysql服务器有一项功能,可以检测到哪条sql语句查询得比较慢,就是慢查询slowlog,现在介绍如何开启. 在[mysqld]下面增加如下代码: long_query_time = 1 log-s ...
随机推荐
- Linux-搜索-文件-find-locate-内容过滤-grep
- [转帖]Jmeter笔记:使用Jmeter向kafka发送消息
https://www.cnblogs.com/daydayup-lin/p/14124816.html 日常工作中有时候需要向kafka中发送消息来测试功能或者性能,这时候我们怎么办呢?我之前是自己 ...
- [转帖]Jmeter学习笔记(十一)——定时器
https://www.cnblogs.com/pachongshangdexuebi/p/11571524.html 默认情况下,Jmeter线程在发送请求之间没有间歇.不设置定时器,短时间内会产生 ...
- [转帖]一文搞懂各种数据库SQL执行计划:MySQL、Oracle等
https://zhuanlan.zhihu.com/p/99331255 MySQL 执行计划 Oracle 执行计划 SQL Server 执行计划 PostgreSQL 执行计划 执行计划(ex ...
- 编译打包rabbitmq然后一键部署的简单方法
摘要 之前总结过一版,但是感觉不太全面 想着本次能够将使用中遇到的问题总结一下. 所以本次是第二版 介质下载 rabbitmq 不区分介质的打包文件 rabbitmq-server-generic-u ...
- 感性理解 int 与 long long 的速度差距 & 感性理解不同取模方法的差距
long long 题该怎么做?#define int long long 会多慢? 有时候,当我们被卡常的时候,不妨想一想,自己在开头定义的 #define int long long 有多大影响? ...
- 纯c#运行开源本地大模型Mixtral-8x7B
先看效果图,这是一个比较典型的逻辑推理问题,以下是本地运行的模型和openai gpt3.5的推理对比 本地运行Mixtral-8x7B大模型: chatgpt3.5的回答: 关于Mixtral 8x ...
- .net Core IsDefined、GetValues、HasFlag 使用
IsDefined可以用于判断传入的单个值是否属于该枚举 GetValues检索指定枚举中常量值的数组 HasFlag 可以用于判断传入的多个值是否属于该枚举 先来个例子: public enum B ...
- 从零开始配置vim(21)——会话管理
很多代码编辑器都有这么一个功能,重新进入编辑器之后能恢复上次打开的所有文件,窗口布局,有的甚至是上次设置的一些配置.那么vim是否也可以实现这样的功能呢?答案是肯定的.使用vim自带的会话管理和 vi ...
- TienChin 渠道管理-添加渠道页面开发
略过,前面已将渠道管理的 index.vue 文件内容全部粘贴给你们了.