使用 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 Agent 以在发生故障切换时捕获日志,然后运行清理作业。在执行此操作之前,您需要修改 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

后续步骤