故障转移和故障恢复 SQL Server 具有不同版本的分布式可用性组

The*_*Guy 0 sql-server availability-groups distributed-availability-groups

我知道SQL Server分布式可用性组可以在两个不同的主要版本之间同步数据,

比方说全球小学 - 2016

二级股份公司 - 2017

此同步将起作用,我也可以进行故障转移。但是我想恢复到 2016 年的故障转移后会发生什么?

  1. 这可能吗?
  2. 2017 年的所有增量数据都会与 2016 年同步吗?

AMt*_*two 5

不。

一旦故障转移到更高版本,就无法返回。

仅当可写主 AG(特别是单个读/写副本)位于较低版本时,将分布式 AG 用于混合版本拓扑才有效。来自文档(粗体我的):

SQL Server 2017 或更高版本中的分布式可用性组可以在同一分布式可用性组中混合 SQL Server 的主要版本。包含读/写主版本的 AG 可以与参与分布式 AG 的其他 AG 版本相同或更低。其他 AG 可以是相同版本或更高版本。该场景针对的是升级、迁移场景。

这本质上与使用日志传送、镜像等来升级和迁移到新版本的限制完全相同。较高版本知道如何从旧版本读取数据,但旧版本可能无法接受新版本的更改(新功能等)。

他们为什么这么做?

当软件工程师构建 SQL Server 2016 时,他们不知道 2017 年可能会发生什么变化。由于他们没有时间机器来正确处理未来的更改和功能,旧版本必须拒绝这些更改。

此外,2016 年不能只接受 2017 年的数据,直到遇到它无法识别的数据。2017年的数据流本质上是一种未知的数据格式。由于旧版本可能无法正确接受某些数据,因此它必须拒绝所有数据。接受未知的数据格式并尝试某种“尽力而为”可能会在较低版本上带来数据损坏的风险,并引发大量 SQL Server 必须预见和支持的情况。保护数据完整性是任何 DBMS 的主要目标,因此从这方面来看,将数据发送到旧版本被认为是不可接受的风险。

  • 由于将未经测试的数据库升级添加到您的灾难恢复计划中是疯狂的,因此此配置仅用于执行升级和迁移到不同的服务器。例如,这通常用于迁移到 Azure VM。 (3认同)