你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

托管实例链接最佳做法 - Azure SQL 托管实例

适用于:Azure SQL 托管实例

本文概述了使用托管实例链接Azure SQL 托管实例和托管在任意位置的 SQL Server 实例之间复制数据的最佳做法,从而提供链接副本之间的近实时数据复制。

定期创建日志备份

如果 SQL Server 是初始主要副本,则在初始种子设定完成,当 Azure SQL 托管实例上的数据库不再处于正在还原...状态时,必须在 SQL Server 上进行第一次日志备份。 然后定期进行 SQL Server 事务日志备份,以便在 SQL Server 处于主要角色时保持正常的事务日志文件大小。

链接功能使用基于 Always On 可用性组的分布式可用性组技术复制数据。 使用分布式可用性组进行的数据复制基于复制事务日志记录。 只有在将事务日志记录复制到次要副本上的数据库之后,才能从 SQL Server 主实例上的数据库中截断这些记录。 如果网络连接问题导致事务日志记录复制速度缓慢或受阻,则日志文件将在主实例上持续增长。 增长速度取决于工作负载的强度和网络速度。 如果主实例上存在长时间的网络连接中断和繁重工作负载,则日志文件可能会占用所有可用存储空间。

定期进行事务日志备份会截断事务日志,并最大限度地降低由于日志文件增长而导致主 SQL Server 实例空间不足的风险。 当 SQL 托管实例是主实例时,无需执行额外的操作,因为日志备份操作已自动执行。 定期在 SQL Server 主实例上创建日志备份能使数据库更灵活地应对计划外日志增长事件。 考虑使用 SQL Server 代理作业来计划每日日志备份任务。

可以使用 Transact-SQL (T-SQL) 脚本来备份日志文件,例如本部分提供的示例。 请将示例脚本中的占位符替换为你的数据库名称、备份文件的名称和路径以及说明。

若要备份事务日志,请使用 SQL Server 上的以下示例 Transact-SQL (T-SQL) 脚本:

-- Execute on SQL Server
-- Take log backup
BACKUP LOG [<DatabaseName>]
TO DISK = N'<DiskPathandFileName>'
WITH NOFORMAT, NOINIT,
NAME = N'<Description>', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 1

使用以下 Transact-SQL (T-SQL) 命令检查 SQL Server 上的数据库使用的日志空间:

-- Execute on SQL Server
DBCC SQLPERF(LOGSPACE); 

查询输出类似于以下示例数据库 tpcc

显示日志文件大小和已用空间的命令结果屏幕截图

在此示例中,数据库使用了 76% 的可用日志空间,而绝对日志文件大小约为 27 GB (27,971 MB)。 操作阈值可能因工作负载而异。 在前面的示例中,事务日志大小和日志使用百分比通常指示,应该进行事务日志备份以截断日志文件并释放一些空间,或者应该进行更频繁的日志备份。 也可能指示事务日志截断被未结事务阻止。 有关排除 SQL Server 中事务日志故障的更多信息,请参阅排除完整事务日志故障 (SQL Server Error 9002)。 有关排查 Azure SQL 托管实例中的事务日志问题的详细信息,请参阅排查 Azure SQL 托管实例的事务日志错误

注意

参与链接时,会从 SQL 托管实例进行自动完整备份和事务日志备份,无论其是否为主要副本。 不会进行差异备份,否则可能会导致还原时间更长。

匹配副本之间的性能容量

使用链接功能时,请务必匹配 SQL Server 和 SQL 托管实例之间的性能容量,以避免在次要副本无法跟上主要副本的复制节奏时或进行故障转移后出现性能问题。 性能容量包括 CPU 核心(或 Azure 中的 vCore)、内存和 I/O 吞吐量。

可以通过次要副本上的重做队列大小功能来检查复制的性能。 重做队列大小表示在次要副本上等待重做的日志记录的数量。 重做队列大小持续较高表示次要副本无法跟上主要副本的节奏。 可通过以下方式检查重做队列大小:

如果重做队列大小持续较高,请考虑增加次要副本上的资源。

轮换证书

用于保护数据库镜像终结点的证书可能会过期,这可能会导致链接降级。 为了防止出现此问题,请在证书过期之前轮换证书

使用以下 Transact-SQL (T-SQL) 命令检查当前证书的期满日:

-- Run on SQL Server
USE MASTER
GO
SELECT * FROM sys.certificates WHERE pvt_key_encryption_type = 'MK' 

如果证书即将过期或已过期,可以创建新的证书,然后更改现有终结点以替换当前证书

将终结点配置为使用新证书后,可以删除过期的证书。

添加启动跟踪标志

在 SQL Server 中,将两个跟踪标志(-T1800-T9567)添加为启动参数后,可以优化通过链接进行数据复制的性能。 有关详细信息,请参阅启用启动跟踪标志

若要使用链接:

若要了解有关链接的详细信息:

对于其他复制和迁移方案,请考虑: