The*_*Guy 0 sql-server availability-groups distributed-availability-groups
我知道SQL Server分布式可用性组可以在两个不同的主要版本之间同步数据,
比方说全球小学 - 2016
二级股份公司 - 2017
此同步将起作用,我也可以进行故障转移。但是我想恢复到 2016 年的故障转移后会发生什么?
仅当可写主 AG(特别是单个读/写副本)位于较低版本时,将分布式 AG 用于混合版本拓扑才有效。来自文档(粗体我的):
SQL Server 2017 或更高版本中的分布式可用性组可以在同一分布式可用性组中混合 SQL Server 的主要版本。包含读/写主版本的 AG 可以与参与分布式 AG 的其他 AG 版本相同或更低。其他 AG 可以是相同版本或更高版本。该场景针对的是升级、迁移场景。
这本质上与使用日志传送、镜像等来升级和迁移到新版本的限制完全相同。较高版本知道如何从旧版本读取数据,但旧版本可能无法接受新版本的更改(新功能等)。
当软件工程师构建 SQL Server 2016 时,他们不知道 2017 年可能会发生什么变化。由于他们没有时间机器来正确处理未来的更改和功能,旧版本必须拒绝这些更改。
此外,2016 年不能只接受 2017 年的数据,直到遇到它无法识别的数据。2017年的数据流本质上是一种未知的数据格式。由于旧版本可能无法正确接受某些数据,因此它必须拒绝所有数据。接受未知的数据格式并尝试某种“尽力而为”可能会在较低版本上带来数据损坏的风险,并引发大量 SQL Server 必须预见和支持的情况。保护数据完整性是任何 DBMS 的主要目标,因此从这方面来看,将数据发送到旧版本被认为是不可接受的风险。