使用 Always On 可用性组


本页介绍了 SQL Server 中的 Always-On 可用性组,以及 Datastream 如何在故障切换和数据恢复场景中支持这些可用性组。

Always On 可用性组概览

在 SQL Server 中,Always On 可用性组是一种高可用性解决方案,可让您为灾难恢复方案做好数据库准备。

Always On 可用性组可最大限度地提高企业的数据库可用性。 可用性组支持为一组选定的数据库(称为可用性数据库)提供复制环境。每个组都包含一组用于读写任务的主数据库,以及最多八组对应的辅助数据库。次要数据库可以选择性地允许只读访问或备份操作。

如需详细了解 Always On 可用性组,请参阅 SQL Server 文档中的什么是 Always On 可用性组?

如需了解 SQL Server 实例的 Always On 可用性组前提条件,请参阅 SQL Server 文档

配置 Datastream 以便与 Always On 可用性组搭配使用

Datastream 支持将同步提交可用性模式与变更表 CDC 方法搭配使用。在此模式下,辅助数据库会与相应的主数据库保持同步,直到数据同步停止。只有当辅助副本将传入的事务日志记录写入磁盘时,才会向客户端发送事务确认。

如需了解可用性模式,请参阅始终开启的可用性组的可用性模式之间的差异

如需配置 SQL Server 实例以与 Always On 可用性组搭配使用,您需要启用 SQL Server 代理,以便在发生故障转移时捕获日志,然后运行清理作业。在此之前,您需要修改 CDC 代理作业步骤,以检查当前副本是否确实是主副本。这是通过使用 sys.fn_hadr_is_primary_replica 函数完成的。

使用以下命令设置实例:

  -- Check if the current replica is a primary for the corresponding database.
  USE [DATABASE_NAME];
  DECLARE @DatabaseName SYSNAME = DB_NAME();
  IF (SELECT sys.fn_hadr_is_primary_replica(@DatabaseName)) = 1
  BEGIN
  -- If the replica isn't a primary, the code block that follows is skipped
  EXECUTE sys.sp_cdc_add_job @job_type = 'capture';
  EXECUTE sys.sp_cdc_add_job @job_type = 'cleanup';
  END

后续步骤