Настройка гибкой политики автоматического перехода на другой ресурс для группы доступности Always OnConfigure a flexible automatic failover policy for an Always On availability group

ОБЛАСТЬ ПРИМЕНЕНИЯ:  даSQL Server (только в Windows) нетБаза данных SQL Azure нетХранилище данных SQL AzureнетParallel Data Warehouse APPLIES TO: yesSQL Server (Windows only) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

В данном разделе описывается настройка гибкой политики отработки отказа в группе доступности AlwaysOn при помощи Transact-SQLTransact-SQL или PowerShell в SQL Server 2017SQL Server 2017.This topic describes how to configure the flexible failover policy for an Always On availability group by using Transact-SQLTransact-SQL or PowerShell in SQL Server 2017SQL Server 2017. Гибкая политика отработки отказа предоставляет гранулярное управление условиями, которые могут вызвать автоматический переход на другой ресурс для группы доступности.A flexible failover policy provides granular control over the conditions that cause automatic failover for an availability group. Изменяя условия отказа, которые инициируют автоматический переход на другой ресурс, и частоту проверки исправности, вы можете увеличить или уменьшить вероятность автоматического перехода на другой ресурс и добиться высокого уровня доступности соглашения об уровне обслуживания.By changing the failure conditions that trigger an automatic failover and the frequency of health checks, you can increase or decrease the likelihood of an automatic failover to support your SLA for high availability.

> [!NOTE]  
>  The flexible failover policy of an availability group cannot be configured by using [!INCLUDE[ssManStudioFull](../../../includes/ssmanstudiofull-md.md)].  

Ограничения автоматического перехода на другой ресурсLimitations on Automatic Failovers

  • Для автоматического перехода на другой ресурс текущая первичная реплика и одна вторичная реплика должны быть настроены в режиме доступности синхронной фиксации с автоматическим переходом на другой ресурс, а вторичная реплика должна быть синхронизирована с первичной.For an automatic failover to occur, the current primary replica and one secondary replica must be configured for synchronous-commit availability mode with automatic failover and the secondary replica must be synchronized with the primary replica.

  • Только три реплики поддерживаются для автоматического перехода на другой ресурс.Only three replicas are supported for automatic failover.

  • Если в группе доступности превышен порог сбоя WSFC, то кластер WSFC не выполняет автоматический переход на другой ресурс для этой группы доступности.If an availability group exceeds its WSFC failure threshold, the WSFC cluster will not attempt an automatic failover for the availability group. Более того, группа ресурсов WSFC для группы доступности остается в состоянии сбоя, пока администратор кластера вручную не переведет сбойную группу ресурсов в режим «в сети» или пока администратор базы данных вручную не выполнит переход группы доступности на другой ресурс.Furthermore, the WSFC resource group of the availability group remains in a failed state until either the cluster administrator manually brings the failed resource group online or the database administrator performs a manual failover of the availability group. Порог сбоя WSFC определяется как максимальное число сбоев, которые могут произойти в группе доступности за заданный период времени.The WSFC failure threshold is defined as the maximum number of failures supported for the availability group during a given time period. По умолчанию используется период в шесть часов, а максимальное число сбоев за этот период по умолчанию равно n-1, где n — число узлов WSFC.The default time period is six hours, and the default value for the maximum number of failures during this period is n-1, where n is the number of WSFC nodes. Чтобы изменить пороговые значения сбоя для заданной группы доступности, используйте консоль диспетчера отработки отказа WSFC.To change the failure-threshold values for a given availability group, use the WSFC Failover Manager Console.

Предварительные требованияPrerequisites

  • Необходимо подключиться к экземпляру сервера, на котором размещена первичная реплика.You must be connected to the server instance that hosts the primary replica.

PermissionsPermissions

ЗадачаTask РазрешенияPermissions
Настройка гибкой политики отработки отказа для новой группы доступностиTo configure the flexible failover policy for a new availability group Требуется членство в фиксированной роли сервера sysadmin и одно из разрешений: CREATE AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP или CONTROL SERVER.Requires membership in the sysadmin fixed server role and either CREATE AVAILABILITY GROUP server permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.
Изменение политики существующей группы доступностиTo modify the policy of an existing availability group Необходимо разрешение ALTER AVAILABILITY GROUP для группы доступности, разрешение CONTROL AVAILABILITY GROUP, разрешение ALTER ANY AVAILABILITY GROUP или разрешение CONTROL SERVER.Requires ALTER AVAILABILITY GROUP permission on the availability group, CONTROL AVAILABILITY GROUP permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

Использование Transact-SQLUsing Transact-SQL

Настройка гибкой политики отработки отказаTo configure the flexible failover policy

  1. Подключитесь к экземпляру сервера, на котором находится первичная реплика.Connect to the server instance that hosts the primary replica.

  2. Для новой группы доступности используйте инструкцию CREATE AVAILABILITY GROUPTransact-SQLTransact-SQL .For a new availability group, use the CREATE AVAILABILITY GROUPTransact-SQLTransact-SQL statement. При добавлении или изменении существующей группы доступности воспользуйтесь инструкцией ALTER AVAILABILITY GROUPTransact-SQLTransact-SQL .If you are modifying an existing availability group, use the ALTER AVAILABILITY GROUPTransact-SQLTransact-SQL statement.

    • Чтобы установить уровень условий перехода на другой ресурс, используйте параметр FAILURE_CONDITION_LEVEL = n , где n — это целое число от 1 до 5.To set the failover condition level, use the FAILURE_CONDITION_LEVEL = n option, where, n is an integer from 1 to 5.

      Например, следующая инструкция Transact-SQLTransact-SQL изменяет уровень условия сбоя для существующей группы доступности AG1до уровня 1:For example, the following Transact-SQLTransact-SQL statement changes the failure-condition level of an existing availability group, AG1, to level one:

      
      ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 1);  
      

      Эти целочисленные значения следующим образом соответствуют уровням условий сбоя.The relationship of these integer values to the failure condition levels is as follows:

      Transact-SQLTransact-SQL ЗначениеValue LevelLevel Автоматическая отработка отказа запускается при...Automatic Is Failover Initiated When...
      11 ОдинOne При остановке работы сервера.On server down. Служба SQL Server останавливается из-за отработки отказа или перезапуска.The SQL Server service stops because of a failover or restart.
      22 ДваTwo При отсутствии ответа от сервера.On server unresponsive. Удовлетворяется любое условие более низкого значения, служба SQL Server подключена к кластеру, а пороговое значение ожидания проверки работоспособности превышено, либо текущая первичная реплика находится в неисправном состоянии.Any condition of lower value is satisfied, the SQL Server service is connected to the cluster and the health check timeout threshold is exceeded, or the current primary replica is in a failed state.
      33 ТриThree В случае критической ошибки сервера.On critical server error. Удовлетворяется любое условие более низкого значения, или возникает внутренняя критическая ошибка сервера.Any condition of lower value is satisfied or an internal critical server error occurs.

      Это уровень, заданный по умолчанию.This is the default level.
      44 ЧетыреFour В случае ошибки сервера средней значимости.On moderate server error. Удовлетворяется любое условие более низкого значения, или возникает ошибка сервера средней значимости.Any condition of lower value is satisfied or a moderate Server error occurs.
      55 ПятьFive При любых подходящих условиях сбоя.On any qualified failure conditions. Удовлетворяется любое условие более низкого значения, или возникает подходящее условие сбоя.Any condition of lower value is satisfied or a qualifying failure condition occurs.

      Дополнительные сведения об уровнях условий перехода на другой ресурс см. в статье Гибкая политика отработки отказа для автоматического перехода на другой ресурс группы доступности (SQL Server).For more information about the failover condition levels, see Flexible Failover Policy for Automatic Failover of an Availability Group (SQL Server).

    • Чтобы настроить пороговое значение ожидания проверки работоспособности, используйте параметр HEALTH_CHECK_TIMEOUT = n, где n является целым числом от 15000 миллисекунд (15 секунд) до 4294967295 миллисекунд.To configure the health check timeout threshold, use the HEALTH_CHECK_TIMEOUT = n option, where, n is an integer from 15000 milliseconds (15 seconds) to 4294967295 milliseconds. Значение по умолчанию — 30 000 миллисекунд (30 секунд)The default value is 30000 milliseconds (30 seconds)

      Например, следующая инструкция Transact-SQLTransact-SQL изменяет пороговое значение времени ожидания проверки работоспособности существующей группы доступности AG1на значение 60 000 миллисекунд (одна минута).For example, the following Transact-SQLTransact-SQL statement changes the health-check timeout threshold of an existing availability group, AG1, to 60,000 milliseconds (one minute).

      
      ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);  
      

Использование PowerShellUsing PowerShell

Настройка гибкой политики отработки отказаTo configure the flexible failover policy

  1. Установите в качестве значения по умолчанию (cd) экземпляр сервера, на котором размещена первичная реплика.Set default (cd) to the server instance that hosts the primary replica.

  2. При добавлении реплики доступности в группу доступности воспользуйтесь командлетом New-SqlAvailabilityGroup .When adding an availability replica to an availability group, use the New-SqlAvailabilityGroup cmdlet. При изменении существующей реплики доступности воспользуйтесь командлетом Set-SqlAvailabilityGroup .When modifying an existing availability replica, use the Set-SqlAvailabilityGroup cmdlet.

    • Чтобы установить уровень условий отработки отказа, используйте параметр FailureConditionLevellevel , где level принимает одно из следующих значений.To set the failover condition level, use the FailureConditionLevellevel parameter, where, level is one of the following values:

      ЗначениеValue LevelLevel Автоматическая отработка отказа запускается при...Automatic Is Failover Initiated When...
      OnServerDownOnServerDown ОдинOne При остановке работы сервера.On server down. Служба SQL Server останавливается из-за отработки отказа или перезапуска.The SQL Server service stops because of a failover or restart.
      OnServerUnresponsiveOnServerUnresponsive ДваTwo При отсутствии ответа от сервера.On server unresponsive. Удовлетворяется любое условие более низкого значения, служба SQL Server подключена к кластеру, а пороговое значение ожидания проверки работоспособности превышено, либо текущая первичная реплика находится в неисправном состоянии.Any condition of lower value is satisfied, the SQL Server service is connected to the cluster and the health check timeout threshold is exceeded, or the current primary replica is in a failed state.
      OnCriticalServerErrorOnCriticalServerError ТриThree В случае критической ошибки сервера.On critical server error. Удовлетворяется любое условие более низкого значения, или возникает внутренняя критическая ошибка сервера.Any condition of lower value is satisfied or an internal critical server error occurs.

      Это уровень, заданный по умолчанию.This is the default level.
      OnModerateServerErrorOnModerateServerError ЧетыреFour В случае ошибки сервера средней значимости.On moderate server error. Удовлетворяется любое условие более низкого значения, или возникает ошибка сервера средней значимости.Any condition of lower value is satisfied or a moderate Server error occurs.
      OnAnyQualifiedFailureConditionsOnAnyQualifiedFailureConditions ПятьFive При любых подходящих условиях сбоя.On any qualified failure conditions. Удовлетворяется любое условие более низкого значения, или возникает подходящее условие сбоя.Any condition of lower value is satisfied or a qualifying failure condition occurs.

      Дополнительные сведения об уровнях условий перехода на другой ресурс см. в статье Гибкая политика отработки отказа для автоматического перехода на другой ресурс группы доступности (SQL Server).For more information about the failover condition levels, see Flexible Failover Policy for Automatic Failover of an Availability Group (SQL Server).

      Например, следующая команда изменяет уровень условия сбоя для существующей группы доступности AG1 до уровня 1.For example, the following command changes the failure-condition level of an existing availability group, AG1, to level one.

      Set-SqlAvailabilityGroup `   
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg `   
      -FailureConditionLevel OnServerDown  
      
    • Чтобы установить пороговое значение времени ожидания для проверки работоспособности, используйте параметр HealthCheckTimeoutn , где n является целым числом от 15000 миллисекунд (15 секунд) до 4294967295 миллисекунд.To set the health check timeout threshold, use the HealthCheckTimeoutn parameter, where, n is an integer from 15000 milliseconds (15 seconds) to 4294967295 milliseconds. Значение по умолчанию — 30 000 миллисекунд (30 секунд).The default value is 30000 milliseconds (30 seconds).

      Например, следующая команда изменяет пороговое значение времени ожидания проверки работоспособности существующей группы доступности AG1на значение 120 000 миллисекунд (две минуты).For example, the following command changes the health-check timeout threshold of an existing availability group, AG1, to 120,000 milliseconds (two minutes).

      Set-SqlAvailabilityGroup `   
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAG `   
      -HealthCheckTimeout 120000  
      

Примечание

Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде PowerShell SQL ServerSQL Server .To view the syntax of a cmdlet, use the Get-Help cmdlet in the SQL ServerSQL Server PowerShell environment. Дополнительные сведения см. в разделе Get Help SQL Server PowerShell.For more information, see Get Help SQL Server PowerShell.

Настройка и использование поставщика SQL Server PowerShellTo set up and use the SQL Server PowerShell provider

См. также:See Also

Обзор групп доступности AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
Режимы доступности (группы доступности AlwaysOn) Availability Modes (Always On Availability Groups)
Отработка отказа и режимы отработки отказа (группы доступности AlwaysOn) Failover and Failover Modes (Always On Availability Groups)
Отказоустойчивая кластеризация Windows Server (WSFC) с SQL Server Windows Server Failover Clustering (WSFC) with SQL Server
Политика отработки отказа для экземпляров откзоустойчивого кластера Failover Policy for Failover Cluster Instances
sp_server_diagnostics (Transact-SQL)sp_server_diagnostics (Transact-SQL)