7.2.4 容错
如果数据节点发生了故障,需要启动宕机恢复过程。每个SQL Server实例最多服务650个逻辑分区,这些分区可能是主副本,也可能是备副本。全局分区管理器统一调度,每次选择一个分区执行重新配置(Reconfiguration)。如果出现故障的分区是备副本,全局分区管理器首先选择一台负载较轻的服务器,接着从相应的主副本分区拷贝数据来增加副本;如果出现故障的分区是主副本,首先需要从其他副本中选择一个最新的备副本作为新的主副本,接着选择一台负载较轻的机器增加备副本。由于云SQL Server采用"Quorum Commit"复制协议,如果每个分区有三个副本,至少保证两个副本写入成功,主副本出现故障后选择最新的备副本可以保证不丢数据。
全局分区管理器控制重新配置任务的优先级,否则,用户的服务会受到影响。比如某个数据分片的主副本出现故障,需要尽快从其他副本中选择备副本切换为主副本;某个数据分片只有一个副本,需要优先复制。另外,某些服务器可能下线很短一段时间后重新上线,为了避免过多无用的数据拷贝,这里还需要配置一些策略:比如只有两个副本的状态持续较长一段时间(SQL Azure默认配置为两小时)才开始复制第三个副本。
全局分区管理器也采用"Quorum Commit"实现高可用性。它包含七个副本,同一时刻只有一个副本为主,分区相关的元数据操作至少需要在四个副本上成功。如果全局分区管理器主副本出现故障,分布式基础部件将负责从其他副本中选择一个最新的副本作为新的主副本。