使用分片技术,如何在多个数据库服务器之间保持可靠的事务?
例如,如果我在一个数据库服务器(MySQL实例)上有一个名为 AccountLedger
的表,在另一个数据库服务器上有一个名为 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;
账户总账数据库服务器:
COMMIT;
用户数据库服务器:
COMMIT; -- What happens if the COMMIT fails here (power goes out or whatever)
我已经读了很多关于分片的内容,但似乎找不到任何关于在分片中使用事务的信息。能否有人指点一下方向?