資料庫映象和跨資料庫事務
跨資料庫事務和分散式事務均不支援資料庫映象。這是因為以下原因無法保證事務的原子性/完整性:
- 對於跨資料庫事務:故障轉移後,映象資料庫位於其他伺服器例項中,並且通常會位於獨立於非映象資料庫的資料庫中。即使是在相同的兩個夥伴之間映象兩個資料庫,仍不能保證這兩個資料庫會同時進行故障轉移。
- 對於分散式事務:故障轉移後,新主體伺服器無法連線到前一個使用相同資源 ID 的主體伺服器的分散式事務處理協調器。因此,新主體伺服器無法獲取事務狀態。
以下示例說明了如何出現邏輯上的不一致。在此示例中,應用程式使用跨資料庫事務插入兩行資料:將其中一行插入映象資料庫 A 中的表,將另一行插入另一個資料庫 B 中的表。資料庫 A 在具有自動故障轉移功能的高安全性模式下進行映象。提交事務時,資料庫 A 不可用,映象會話將故障自動轉移到資料庫 A 的映象資料庫。
故障轉移之後,跨資料庫事務可能會在資料庫 B 上成功提交,但不可能會在故障轉移的資料庫中成功提交。如果在發生故障之前,資料庫 A 的原始主體伺服器未能將跨資料庫事務的日誌傳送到映象伺服器,則可能會出現這種情況。故障轉移之後,該事務將不存在於新的主體伺服器上。資料庫 A 和資料庫 B 出現不一致,因為在資料庫 B 中插入的資料保持完好無損,而在資料庫 A 中插入的資料已經丟失。
使用 MS DTC 事務時可能會出現類似的情況。例如,故障轉移後,新主體將訪問 MS DTC。但是 MS DTC 不能識別新的主體伺服器,因而會終止被認為已在其他資料庫中提交了的、所有“準備提交”的事務。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-494024/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AlwaysOn 可用性組或資料庫映象不支援跨資料庫事務和分散式事務資料庫分散式
- 資料庫映象和資料庫快照資料庫
- 資料庫事務整理資料庫
- 複製和資料庫映象資料庫
- 淺談資料庫事務資料庫
- 說說資料庫事務資料庫
- 資料庫事務的特徵資料庫特徵
- 資料庫事務概論資料庫
- 資料庫事務 ACID資料庫
- 資料庫事務隔離資料庫
- MCMySQL 資料庫 索引和事務ktkMySql資料庫索引
- java DB 雙資料來源和資料庫事務配置Java資料庫
- JDBC、JDBC框架、資料庫事務、資料庫連線池JDBC框架資料庫
- 已為資料庫映象啟動資料庫,必須刪除資料庫映象才能刪除該資料庫資料庫
- 資料庫映象和全文目錄資料庫
- 資料庫事務與 MySQL 事務總結資料庫MySql
- Laravel 開啟資料庫事務Laravel資料庫
- 資料庫事務入門指南資料庫
- MySQL資料庫本地事務原理MySql資料庫
- 資料庫主要物件及事務資料庫物件
- docker 映象倉庫 Harbor 部署 以及 跨資料複製Docker
- 資料庫事務以及事務的四個特性資料庫
- 資料庫映象和日誌傳送資料庫
- 資料庫映象和故障轉移群集資料庫
- SQL Server 資料庫映象SQLServer資料庫
- 資料庫映象 (SQL Server)資料庫SQLServer
- 資料庫事務和MVCC多版本併發控制資料庫MVC
- ORACLE資料庫事務處理和故障恢復Oracle資料庫
- 【MySQL】資料庫事務深入分析MySql資料庫
- [專業術語]資料庫事務資料庫
- 資料庫事務隔離級別資料庫
- SQL基礎-->資料庫事務(TRANSACTION)SQL資料庫
- 用【庫存】看懂雲開發資料庫事務資料庫
- 資料庫事務與事務的隔離級別資料庫
- 暑期自學 Day 14 | 資料庫 (七)- 事務資料庫
- 資料庫事務與隔離級別資料庫
- 資料庫事務的方方面面資料庫
- 面試官:說說資料庫事務吧面試資料庫