使用分片,您如何在多個數據庫服務器之間維護可靠的事務?例如,如果我在一個數據庫服務器(MySQL實例)上有一個名爲AccountLedger
的表,並且在另一個數據庫服務器上有一個名爲User
的表,是否可以跨兩個數據庫實例運行事務,這兩個數據庫實例都可以可靠地提交,或者回滾失敗?使用MySQL進行分片和事務
例事務:
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)
我讀過不少關於分片,但我似乎無法找到關於使用交易與分片的任何信息。有人能指引我朝着正確的方向嗎?