本页介绍了 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
后续步骤
- 详细了解 Datastream 如何与 SQL Server 源搭配使用。