如何在不停机的情况下在SQL Server Always On可用性组中设置恢复模式?

A X*_*A X 0 sql-server backup availability-groups sql-server-2016

我正在运行 SQL Server 2016 2 节点 Always On 可用性组,并且我想做一些备份。我通常运行此查询来进行备份:

-- To permit log backups, before the full database backup, modify the database to use the full recovery model.  
USE master;  
ALTER DATABASE dbname
   SET RECOVERY FULL;  


BACKUP DATABASE dbname
   TO URL = 'https://bloblname.blob.core.windows.net/databasebackup/backup.bak'
   WITH CREDENTIAL = 'credentialname';
Run Code Online (Sandbox Code Playgroud)

我的问题是,我可以在可用性组主节点上执行此部分操作而不会导致停机吗?

ALTER DATABASE dbname
   SET RECOVERY FULL;  
Run Code Online (Sandbox Code Playgroud)

我担心如果我在主要可用性组上运行此命令,它会以某种方式导致同步停止,或者可能产生其他可能有害的影响。

另一个相关问题是 - 您建议在主服务器还是辅助服务器上运行这些命令?

任何对此的帮助将不胜感激。

Ton*_*kle 5

可用性组要求数据库处于完全恢复模式(请参阅可用性数据库先决条件和限制),因此在运行备份之前无需将其切换到完全恢复模式。如果数据库位于可用性组中,则不应将其退出完全恢复模式。

至于在哪里运行备份,在主服务器还是辅助服务器上,这是一个负载分配和货币的问题。如果您不希望备份负载在主服务器上运行,则需要在辅助服务器上运行它。如果它们处于异步复制中,并且某些数据库复制备份在日志发送队列中,则备份可能不包含所有最新数据。

  • 现在允许在被动辅助节点上进行备份和数据库一致性检查。请参阅此处的 SQL Server 2019 许可指南:https://download.microsoft.com/download/e/2/9/e29a9331-965d-4faa-bd2e-7c1db7cd8348/SQL_Server_2019_Licensing_guide.pdf (2认同)