更改 SQL Server 中现有的 AlwaysOn 可用性组。              但是,只有辅助副本支持 JOIN、FAILOVER 和 FORCE_FAILOVER_ALLOW_DATA_LOSS 参数。

 

当前版本)。                                       

Transact-SQL 语法约定

语法                             

  
      
ALTER AVAILABILITY GROUP group_name 
  {
     SET ( <set_option_spec> ) 
   | ADD DATABASE database_name 
   | REMOVE DATABASE database_name
   | ADD REPLICA ON <add_replica_spec> 
   | MODIFY REPLICA ON <modify_replica_spec>
   | REMOVE REPLICA ON <server_instance>
   | JOIN
   | FAILOVER
   | FORCE_FAILOVER_ALLOW_DATA_LOSS   | ADD LISTENER ‘dns_name’ ( <add_listener_option> )
   | MODIFY LISTENER ‘dns_name’ ( <modify_listener_option> )
   | RESTART LISTENER ‘dns_name’
   | REMOVE LISTENER ‘dns_name’
   | OFFLINE
  }
[ ; ]

<set_option_spec> ::= 
    AUTOMATED_BACKUP_PREFERENCE = { PRIMARY | SECONDARY_ONLY| SECONDARY | NONE }
  | FAILURE_CONDITION_LEVEL  = { 1 | 2 | 3 | 4 | 5 } 
  | HEALTH_CHECK_TIMEOUT = milliseconds 

<server_instance> ::= 
 { 'system_name[\instance_name]' | 'FCI_network_name[\instance_name]' }

<add_replica_spec>::=
  <server_instance> WITH
    (
       ENDPOINT_URL = 'TCP://system-address:port',
       AVAILABILITY_MODE = { SYNCHRONOUS_COMMIT | ASYNCHRONOUS_COMMIT },
       FAILOVER_MODE = { AUTOMATIC | MANUAL }
       [ , <add_replica_option> [ ,...n ] ]
    ) 

  <add_replica_option>::=
       BACKUP_PRIORITY = n
     | SECONDARY_ROLE ( { 
          ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } 
        | READ_ONLY_ROUTING_URL = 'TCP://system-address:port' 
          } )
     | PRIMARY_ROLE ( { 
          ALLOW_CONNECTIONS = { READ_WRITE | ALL } 
        | READ_ONLY_ROUTING_LIST = { ( ‘<server_instance>’ [ ,...n ] ) | NONE } 
          } )
     | SESSION_TIMEOUT = seconds 


<modify_replica_spec>::=
  <server_instance> WITH
    (  
       ENDPOINT_URL = 'TCP://system-address:port' 
     | AVAILABILITY_MODE = { SYNCHRONOUS_COMMIT | ASYNCHRONOUS_COMMIT } 
     | FAILOVER_MODE = { AUTOMATIC | MANUAL } 
     | BACKUP_PRIORITY = n
     | SECONDARY_ROLE ( { 
          ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } 
        | READ_ONLY_ROUTING_URL = 'TCP://system-address:port' 
          } )
     | PRIMARY_ROLE ( { 
          ALLOW_CONNECTIONS = { READ_WRITE | ALL } 
        | READ_ONLY_ROUTING_LIST = { ( ‘<server_instance>’ [ ,...n ] ) | NONE } 
          } )
     | SESSION_TIMEOUT = seconds 
    )  


<add_listener_option> ::=
   {
      WITH DHCP [ ON ( <network_subnet_option> ) ]
    | WITH IP ( { ( <ip_address_option> ) } [ , ...n ] ) [ , PORT = listener_port ]
   }

  <network_subnet_option> ::=
     ‘four_part_ipv4_address’, ‘four_part_ipv4_mask’  

  <ip_address_option> ::=
     { 
        ‘four_part_ipv4_address’, ‘four_part_ipv4_mask’
      | ‘ipv6_address’
     }

<modify_listener_option>::=
    {
       ADD IP ( <ip_address_option> ) 
     | PORT = listener_port
    }
参数                             

group_name       

group_name 必须是一个有效的 SQL Server 标识符,并且它必须在 WSFC 群集的所有可用性组中保持唯一。

AUTOMATED_BACKUP_PREFERENCE = { PRIMARY | SECONDARY_ONLY| SECONDARY | NONE }  

SQL Server 不会强制执行首选项,因此它对即席备份没有影响,了解这一点很重要。

仅在主副本上支持。    

这些值如下所示:    

PRIMARY      

如果您需要在对辅助副本运行备份时不支持的备份功能,例如创建差异备份,此选项将很有用。

                 重要提示              

“主要”,直到准备好所有辅助数据库并将其加入可用性组。                

SECONDARY_ONLY      

如果主副本是唯一的联机副本,则备份应不会发生。

SECONDARY      

这是默认行为。

NONE      

请注意,备份作业可能评估其他因素,例如每个可用性副本的备份优先级及其操作状态和已连接状态。

             重要提示          

配置可用性副本备份 (SQL Server)。

             注意          

AUTOMATED_BACKUP_PREFERENCE = NONE)。

FAILURE_CONDITION_LEVEL = { 1 | 2 | 3 | 4 | 5 }  

此外,只有在主副本和辅助副本均配置为自动故障转移模式 (FAILOVER_MODE = AUTOMATIC) 并且辅助副本当前与主副本同步的情况下,失败条件才可以触发自动故障转移。

仅在主副本上支持。    

下表介绍了与各级别相对应的失败条件。

 

级别            

失败条件            

1            

指定在发生以下任何情况时应启动自动故障转移:            

  • SQL Server 服务停止。                

  • 工作方式:SQL Server AlwaysOn 租约超时。

2            

指定在发生以下任何情况时应启动自动故障转移:            

  • SQL Server 的实例未连接到群集,并且超出了可用性组的用户指定的 HEALTH_CHECK_TIMEOUT 阈值。                

  • 可用性副本处于失败状态。                

3            

指定在发生了严重的 SQL Server 内部错误(例如孤立的自旋锁、严重的写访问冲突或过多的转储)时应启动自动故障转移。            

这是默认行为。            

4            

指定在发生了中等程度的 SQL Server 内部错误(例如在 SQL Server 内部资源池中出现持久的内存不足情况)时应启动自动故障转移。            

5            

指定在出现任何符合的失败条件时应启动自动故障转移,这些失败条件包括:            

  • SQL 引擎的工作线程耗尽。                

  • 检测到无法解决的死锁。                

             注意          

缺少 SQL Server 的实例对客户端请求的响应与可用性组无关。            

针对可用性组的自动故障转移的灵活的故障转移策略 (SQL Server)

HEALTH_CHECK_TIMEOUT = milliseconds  

此外,只有在主副本和辅助副本均配置为自动故障转移模式 (FAILOVER_MODE = AUTOMATIC) 并且辅助副本当前与主副本同步的情况下,运行状况检查超时才可以触发自动故障转移。

最小值为 15000 毫秒(15 秒),最大值为 4294967295 毫秒。

仅在主副本上支持。    

             重要提示          

sp_server_diagnostics 在数据库级别不执行运行状况检查。            

ADD DATABASE database_name  

sys.databases 目录视图中的 replica_id 列。

仅在主副本上支持。    

             注意          

启动 AlwaysOn 辅助数据库的数据移动 (SQL Server)。

REMOVE DATABASE database_name  

仅在主副本上支持。

从可用性组中删除主数据库 (SQL Server)。    

ADD REPLICA ON  

通过在每个副本的服务器实例地址后追加 WITH (…) 子句来指定每个副本。

仅在主副本上支持。    

有关详细信息,请参阅本节后面对 JOIN 选项的说明。

<server_instance>  

语法如下:

instance_name]' }

此地址由以下部分组成:    

system_name               

此计算机必须是一个 WSFC 节点。

FCI_network_name               

instance_name]' 字符串(即完整的副本名称)。

instance_name               

@@SERVERNAME 所返回的值相同。

\      

FCI_network_name 区分开来。        

针对 AlwaysOn 可用性组的先决条件、限制和建议 (SQL Server)。    

ENDPOINT_URL = 'TCP://system-address:port'  

数据库镜像端点的 URL 路径。    

在添加或修改可用性副本时指定端点 URL (SQL Server)。

'TCP://system-address:port'  

URL 参数如下所示:

system-address               

一个字符串,例如系统名称、完全限定的域名或 IP 地址,它们明确标识了目标计算机系统。        

port               

是与服务器实例的镜像端点关联的端口号(对于 ENDPOINT_URL 选项)或服务器实例的数据库引擎使用的端口号(对于 READ_ONLY_ROUTING_URL 选项)。        

AVAILABILITY_MODE = { SYNCHRONOUS_COMMIT | ASYNCHRONOUS_COMMIT }  

针对同一主副本上不同数据库的事务可以单独提交。

SYNCHRONOUS_COMMIT      

您可以为最多三个副本(包括主副本)指定 SYNCHRONOUS_COMMIT。

ASYNCHRONOUS_COMMIT      

您可以为最多五个可用性副本(包括主副本)指定 ASYNCHRONOUS_COMMIT。

可用性模式(AlwaysOn 可用性组)。

FAILOVER_MODE = { AUTOMATIC | MANUAL }  

指定您要定义的可用性副本的故障转移模式。    

AUTOMATIC      

您可以为最多两个可用性副本(包括主副本)指定 AUTOMATIC。

                 注意              

SQL Server 故障转移群集实例 (FCI) 不支持通过可用性组来自动进行故障转移,因此,只能为手动故障转移配置任何由 FCI 承载的可用性副本。                

MANUAL      

允许数据库管理员手动故障转移或强制手动故障转移(“强制故障转移”)。        

故障转移和故障转移模式(AlwaysOn 可用性组)。

BACKUP_PRIORITY =n  

这些值将具有以下含义:

  • 如果 BACKUP_PRIORITY = 1,则只有在没有更高的优先级可用性副本当前可用的情况下,才会选择可用性副本来执行备份。

  • 例如,这对于您永远不希望备份故障转移到的远程可用性副本十分有用。

活动辅助副本:辅助副本备份(AlwaysOn 可用性组)。    

SECONDARY_ROLE ()  

如果指定两个选项,则使用以逗号分隔的列表。

辅助角色选项如下所示:    

ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL }      

指定给定的可用性副本(正在执行辅助角色,也就是充当辅助副本)的数据库是否可以接受来自客户端的连接,可以是以下之一:        

NO          

这是默认行为。

READ_ONLY          

将连接字符串关键字用于 SQL Server Native Client。

ALL          

允许针对辅助副本中的数据库的所有连接进行只读访问。            

活动辅助副本:可读辅助副本(AlwaysOn 可用性组)。        

READ_ONLY_ROUTING_URL = 'TCP://system-address:port'      

通常,SQL Server 数据库引擎的默认实例侦听 TCP 端口 1433。

服务器实例使用 Transact-SQL 侦听器 (type_desc='TSQL')。

计算 AlwaysOn 的 read_only_routing_url。        

                 注意              

配置服务器以侦听特定 TCP 端口(SQL Server 配置管理器)。

PRIMARY_ROLE ()  

如果指定两个选项,则使用以逗号分隔的列表。

主角色选项如下所示:    

ALLOW_CONNECTIONS = { READ_WRITE | ALL }      

指定给定的可用性副本(正在执行主要角色,也就是充当主副本)的数据库可以接受的来自客户端的连接类型,可以是以下之一:        

READ_WRITE          

将连接字符串关键字用于 SQL Server Native Client。

ALL          

这是默认行为。

READ_ONLY_ROUTING_LIST = { (<server_instance> [ ,...n ] ) | NONE }      

指定一个以逗号分隔的服务器实例列表,这些实例承载在以辅助角色运行时满足以下要求的此可用性组的可用性副本:        

  • 被配置为允许所有连接或只读连接(参阅上文 SECONDARY_ROLE 选项的 ALLOW_CONNECTIONS 参数)。            

  • 定义了只读路由 URL(参阅上文 SECONDARY_ROLE 选项的 READ_ONLY_ROUTING_URL 参数)。            

READ_ONLY_ROUTING_LIST 的值如下:        

<server_instance>          

指定承载可用性副本的 SQL Server 实例的地址,该副本在以辅助角色运行时是可读辅助副本。            

如果在副本的只读路由列表中包含副本的宿主服务器实例,通常将此服务器实例放在列表末尾比较好,这样在一个辅助副本可用时读意向连接将访问它。

NONE          

与 MODIFY REPLICA ON 一起使用时,此值将禁用现有列表(如果有)。

SESSION_TIMEOUT =seconds  

最小值为 5 秒。

             重要提示          

我们建议您将超时期限保持为 10 秒或更长。            

AlwaysOn 可用性组概述 (SQL Server)。    

MODIFY REPLICA ON  

要修改的副本列表包含每个副本的服务器实例地址和 WITH (…) 子句。

仅在主副本上支持。    

REMOVE REPLICA ON  

其辅助数据库从可用性组中删除,并且进入 RESTORING 状态。

仅在主副本上支持。    

             注意          

如果您在某一副本处于不可用或失败状态时删除该副本,则在其恢复联机状态时,将会发现不再属于该可用性组。            

JOIN  

导致本地服务器实例承载指定可用性组中的辅助副本。    

仅在尚未加入可用性组的辅助副本上支持。    

将辅助副本联接到可用性组 (SQL Server)。    

FAILOVER  

在发生一系列故障后,这些角色可能来回切换。

请注意,对于要同步的辅助副本,主副本也必须在同步提交模式下运行。

             注意          

但是,在可用性组完成故障转移之后,数据库恢复操作将以异步方式执行。

执行可用性组的计划手动故障转移 (SQL Server)。    

FORCE_FAILOVER_ALLOW_DATA_LOSS  
             注意          

因此,我们强烈建议您仅在以下情况下才强制故障转移:主副本不再运行、您愿意承担丢失数据的风险并且您必须立即将服务还原到可用性组。

--对其输入故障转移命令的副本称为“故障转移目标”。

在以前的主副本可用前,它将切换到辅助角色,并且其数据库将成为挂起的辅助数据库。

             注意          

但是,在可用性组完成故障转移之后,数据库恢复操作将以异步方式执行。

执行可用性组的强制手动故障转移 (SQL Server)。    

ADD LISTENER dns_name( <add_listener_option> )  

仅在主副本上支持。

             重要提示          

创建或配置可用性组侦听器 (SQL Server)。            

为给定可用性组创建侦听器后,我们强烈建议您执行以下操作:            

  • 请求您的网络管理员将该侦听器的 IP 地址保留为专用。                

  • 将该侦听器的 DNS 主机名提供给应用程序开发人员,以便在请求与此可用性组的客户端连接时用于连接字符串中。                

dns_name       

在域和 NetBIOS 中,侦听器的 DNS 名称必须唯一。

最大长度为 63 个字符。

ag1-listener。

             重要提示          

分配域名。

<add_listener_option>  

ADD LISTENER 采用以下选项之一:    

WITH DHCP [ ON { (four_part_ipv4_address,four_part_ipv4_mask) } ]      

DHCP 限制为单个子网,该子网用于在可用性组中承载可用性副本的每个服务器实例。

                 重要提示              

但是,DHCP 适合用于设置开发和测试环境以验证可用性组的基本功能并适合与应用程序集成。

例如:        

WITH DHCP ON ('10.120.19.0','255.255.254.0')

WITH IP ( { (four_part_ipv4_address,four_part_ipv4_mask)(ipv6_address) } [ , ...n ] )  [ , PORT =listener_port ]      

请与您的网络管理员联系以获取将承载新可用性组的可用性副本的每个子网的静态 IP 地址。

例如:        

WITH IP ( ('10.120.19.155','255.255.254.0') )

four_part_ipv4_address       

10.120.19.155。

four_part_ipv4_mask       

255.255.254.0。

ipv6_address       

2001::4898:23:1002:20f:1fff:feff:b3a3。

PORT =listener_port  

PORT 是可选的。

但出于安全考虑,我们建议使用其他端口号。

WITH IP ( ('2001::4898:23:1002:20f:1fff:feff:b3a3') ) , PORT = 7777    

MODIFY LISTENER dns_name  ( <modify_listener_option> )  

仅在主副本上支持。

<modify_listener_option>  

MODIFY LISTENER 采用以下选项之一:    

ADD IP { (four_part_ipv4_address,  four_part_ipv4_mask)(dns_nameipv6_address) }      

dns_name 指定的可用性组侦听器。        

PORT =listener_port      

请参阅本节前面对此参数的说明。        

RESTART LISTENER dns_name  

仅在主副本上支持。

REMOVE LISTENER dns_name  

仅在主副本上支持。

OFFLINE  

同步提交数据库没有数据丢失。

因此,在将可用性组资源迁移到新 WSFC 群集时,仅在 AlwaysOn 可用性组 的跨群集迁移过程中使用 OFFLINE 选项。

使可用性组脱机 (SQL Server)。    

[返回页首]  

针对 AlwaysOn 可用性组的先决条件、限制和建议 (SQL Server)。

AlwaysOn 可用性组的 Transact-SQL 语句概述 (SQL Server)。

安全性                             

权限

对可用性组要求 ALTER AVAILABILITY GROUP 权限、CONTROL AVAILABILITY GROUP 权限、ALTER ANY AVAILABILITY GROUP 权限或 CONTROL SERVER 权限。  

示例                             

A.将辅助副本联接到可用性组

AccountsAG可用性组的辅助副本。  

    
        
ALTER AVAILABILITY GROUP AccountsAG JOIN;
GO

B.强制可用性组的故障转移

AccountsAG可用性组故障转移到您所连接的辅助副本。  

    
        
ALTER AVAILABILITY GROUP AccountsAG FORCE_FAILOVER_ALLOW_DATA_LOSS;
GO

相关文章:

  • 2021-06-13
  • 2021-06-26
  • 2021-10-12
  • 2021-12-19
  • 2021-05-26
  • 2021-11-23
猜你喜欢
  • 2021-12-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-24
  • 2022-12-23
  • 2021-07-25
相关资源
相似解决方案