使用分片,如何跨多个数据库服务器维护可靠的事务?
例如,如果我有一个AccountLedger
在一个数据库服务器(MySQL 实例)上命名的表和一个User
在另一个数据库服务器上命名的表,是否可以跨两个数据库实例运行一个事务,该事务将可靠地提交或在失败时回滚?
交易示例:
AccountLedger 数据库服务器:
START TRANSACTION;
INSERT INTO AccountLedger SET
UserID = @UserID,
Date = @Date,
Debit = @Debit,
Balance = @Balance;
用户数据库服务器:
START TRANSACTION;
UPDATE User SET
Balance = @Balance
WHERE UserID = @UserID;
AccountLedger 数据库服务器:
COMMIT;
用户数据库服务器:
COMMIT; -- What happens if the COMMIT fails here (power goes out or whatever)
我已经阅读了很多关于分片的内容,但我似乎找不到任何关于使用分片交易的信息。有人可以指出我正确的方向吗?