本帖最后由 刘泽宇 于 2022-6-8 17:27 编辑
可以在 SQL Server 中使用 SQL Server Management Studio、Transact-SQL 或 PowerShell 暂停 Always On 可用性组中的可用性数据库。 请注意,挂起命令需要对承载要挂起或恢复的数据库的服务器实例发出。 挂起命令的效果取决于您挂起的是辅助数据库还是主数据库,如下所示: 挂起的数据库 | 挂起命令的效果 | 辅助数据库 | 仅挂起本地辅助数据库,并且其同步状态变为 NOT SYNCHRONIZING。 其他辅助数据库不受影响。 挂起的数据库将停止接收和应用数据(日志记录),并且开始落在主数据库的后面。 可读辅助副本上的现有连接会保持可用状态。 可读辅助副本上挂起数据库的新连接在数据移动恢复之前一直处于禁用状态。 仅当使用侦听器和只读路由打开连接时,此行为才适用。
主数据库仍然可用。 如果您挂起相应的每个辅助数据库,则主数据库将公开运行。
** 重要提示 **
当挂起辅助数据库时,对应主数据库的发送队列将累积未发送的事务日志记录。 与辅助副本的连接将返回在数据移动挂起时可用的数据。 | 主数据库 | 主数据库将停止数据移动到每个连接的辅助数据库。 主数据库将继续在公开模式下运行。 主数据库仍然保持对客户端可用,可读取辅助数据库上的现有连接保持可用并且可以建立新连接。 |
开始之前限制和局限SUSPEND 命令只要被承载目标数据库的副本接受后就返回,但是实际上挂起数据库以异步方式发生。 先决条件您必须连接到承载要挂起的数据库的服务器实例。 若要挂起主数据库和相应的辅助数据库,请连接到承载主副本的服务器实例。 若要挂起辅助数据库但保持主数据库可用,请连接到辅助副本。 建议出现瓶颈时,短暂挂起一个或多个辅助数据库可能有助于暂时提高主副本的性能。 只要有一个辅助数据库仍挂起,就无法截断相应的主数据库的事务日志。 这将导致日志记录在主数据库上累积。 因此,我们建议您快速恢复或删除挂起的辅助数据库。 安全性权限需要对数据库拥有 ALTER 权限。 对可用性组要求 ALTER AVAILABILITY GROUP 权限、CONTROL AVAILABILITY GROUP 权限、ALTER ANY AVAILABILITY GROUP 权限或 CONTROL SERVER 权限。 使用 SQL Server Management Studio挂起数据库 在对象资源管理器中,连接到承载要挂起的数据库所在的可用性副本的服务器实例,然后展开服务器树。 依次展开“Always On 高可用性”节点和“可用性组”节点。 展开该可用性组。 展开“可用性数据库”节点,右键单击该数据库,然后单击“挂起数据移动”。 在 “挂起数据移动” 对话框中,单击 “确定” 。 对象资源管理器通过更改数据库图标以显示一个暂停指示符,来指示已挂起该数据库。
“使用 Transact-SQL”挂起数据库 使用 PowerShell挂起数据库 将目录 (cd) 更改为承载要挂起其数据库的副本的服务器实例。 使用 Suspend-SqlAvailabilityDatabase cmdlet 挂起可用性组。 例如,以下命令为可用性数据库 MyDb3 (位于 MyAg 服务器实例上的可用性组 Computer\Instance中)暂停数据同步。
Suspend-SqlAvailabilityDatabase `
-Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb3
|