文章详情页
MySQL数据库中间件如何实现分布式事务
浏览:293日期:2022-06-20 14:47:44
问题描述
假设我有两个MySQL数据库节点,在这两个节点前面有一个数据库中间件,应用通过数据库中间件来使用后面的两个MySQL节点, 结构如下图所示:

当应用通过中间件执行一个事务时,这个事务需要由中间件转发给两个MySQL节点,于是在中间件这一层,原本普通的事务现在升级成了跨越两个MySQL节点的分布式事务。对于应用程序来说,应用程序希望这个事务要么都被两个MySQL节点执行成功,要么都不成功。
当应用程序begin了事务,执行一系列SQL语句后,应用程序进行commit,此时数据库中间件会分别向两个MySQL节点发送commit命令,假设两个MySQL节点都接收到了commit命令,并成功提交,那么事务执行成功。如果其中一个节点commit成功,而另外一个节点由于一些原因无法执行commit(可能网络断开,或者MySQL数据库出现错误),又由于已经commit的事务无法rollback,所以此时两个MySQL节点就出现了数据不一致的情况。
我的问题是:目前是否有上述问题的解决方法或解决思路,先谢谢了
问题解答
回答1:xa
事务资源预分配
业务原子操作
相关文章:
1. docker 17.03 怎么配置 registry mirror ?2. docker容器呢SSH为什么连不通呢?3. javascript - ios navgationTiming的responseStart > responseEnd? 会使什么原因造成的4. javascript - 前端使用 jquery.jsonp.js 插件 跨域报错 SyntaxError: Unexpected token :5. python - 怎样在linux下开发flask web应用时查看代码出错(traceback)的地方。6. 实习过半年多Java开发,即将毕业,简历上的java项目写哪些比较有亮点的功能呢?能比较吸引技术面试审核简历的,相对于应届生来说7. javascript - jquery如何查询thead下所有带有.sort样式的th?8. java - LinearLayout设置background不显示所设置的图片9. javascript - postcss-loader在webpack2的使用.10. javascript - nodejs使用require(’request’)模块发送数据,报错
排行榜

网公网安备