技术文档

MySQL分库分表-多实例INSERT的困扰

存在问题

分库分表是完成了,细心的朋友可能会发现。我们这边存在一个问题就是本来应该在一起的事务,现在因为分库事务将被分成了两个。如果第一个事务完成了提交,这时候应用程序或服务器发生了问题导致第二个没有提交。这样就有问题了。

MySQL分库分表-多实例INSERT的困扰

例如:在之前文章的示例中导购的销售订单的事务已经提交了,而这时由于某些原因导致购买者的订单没有提交。这时候就会出现导购能看得到订单而消费者却看不到。

解决办法

1、直接使用MySQL的XA(分布式事物)

2、从业务上去解决

 

使用MySQL的XA前需要知道的

在同一个实例中不能有相同的XID(分布式事务ID)出现。使用Python在同一实例创建多个相同的XA会报错”The>

使用MySQL的XA

由于之前为了方便只在一个实例中演示了分库分表的操作。如果使用多个XA会报错的。

这边我只使(用伪代码)的形式来说明使用XA。如果有想知道Python如何使用XA可以常考以下链接

http://stackoverflow.com/questions/18485895/python-distributed-transactions-like-java-transaction-api-jta

1
©2020-2024   万云SSL证书  (www.sslssl.com.cn)  万云科技   豫ICP备2020034358号-10