分库分表是完成了,细心的朋友可能会发现。我们这边存在一个问题就是本来应该在一起的事务,现在因为分库事务将被分成了两个。如果第一个事务完成了提交,这时候应用程序或服务器发生了问题导致第二个没有提交。这样就有问题了。
例如:在之前文章的示例中导购的销售订单的事务已经提交了,而这时由于某些原因导致购买者的订单没有提交。这时候就会出现导购能看得到订单而消费者却看不到。
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