CREATE AVAILABILITY GROUP (Transact-SQL)

Создание новой группы доступности при условии, что экземпляр SQL Server включен для функции Группы доступности AlwaysOn.

Важное примечаниеВажно!

Выполните CREATE AVAILABILITY GROUP в экземпляре SQL Server, который предполагается использовать в качестве начальной первичной реплики создаваемой группы доступности.Этот экземпляр сервера должен располагаться на узле отказоустойчивого кластера Windows Server (WSFC).

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2012 до текущей версии).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

CREATE AVAILABILITY GROUP group_name
   WITH (<with_option_spec> [ ,...n ] )
   FOR [ DATABASE database_name [ ,...n ] ]
   REPLICA ON <add_replica_spec> [ ,...n ]
   [ LISTENER ‘dns_name’ ( <listener_option> ) ]
[ ; ]

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

<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 = integer 

<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’
     }

Аргументы

  • group_name
    Указывает имя новой группы доступности. Аргумент group_name должен быть допустимым идентификатором SQL Server и являться уникальным во всех группах доступности в кластере WSFC. Максимальная длина имени группы доступности составляет 128 символов.

  • AUTOMATED_BACKUP_PREFERENCE = { PRIMARY | SECONDARY_ONLY| SECONDARY | NONE }
    Указывает приоритет, согласно которому задание резервного копирования вычисляет первичную реплику при выборе места для создания резервных копий. Вы можете написать скрипт для того, чтобы задание резервного копирования учитывало приоритет автоматического резервного копирования. Важно понимать, что приоритет не определяется SQL Server, поэтому он не влияет на выполнение нерегламентированного резервного копирования.

    Поддерживаются следующие значения:

    • PRIMARY
      Указывает, что резервное копирования должно всегда выполняться на первичной реплике. Данный параметр является полезным, если вам требуются такие функции резервного копирования, как создание разностных резервных копий, которые не поддерживаются при выполнении резервного копирования на вторичной реплике.

      Важное примечаниеВажно!

      Если планируется использовать доставку журналов для подготовки баз данных-получателей для группы доступности, задайте параметру автоматизированного резервного копирования значение Первичная до тех пор, пока все базы данных-получатели не будут подготовлены и присоединены к группе доступности.

    • SECONDARY_ONLY
      Указывает, что резервное копирование никогда не выполняется на первичной реплике. Если первичная реплика является единственной репликой, находящейся в режиме «в сети», резервное копирование не будет выполняться.

    • SECONDARY
      Указывает, что резервное копирование должно выполняться на вторичной реплике, за исключением тех случаев, когда в режиме «в сети» находится только первичная реплика. В этом случае резервное копирование будет выполняться на первичной реплике. Это режим по умолчанию.

    • NONE
      Указывает, что вы предпочитаете, чтобы задания резервного копирования пропускали реплики доступности при выборе реплики для создания резервных копий. Примечание. Задания резервного копирования могут учитывать другие факторы, например приоритет резервного копирования каждой реплики доступности в сочетании с ее состоянием работоспособности и соединения.

    Важное примечаниеВажно!

    Принудительного применения параметра AUTOMATED_BACKUP_PREFERENCE не существует.Интерпретация данного приоритета зависит от логики (при ее наличии), которая внесена в задания резервного копирования для баз данных в указанной группе доступности.Параметр автоматического резервного копирования не влияет на выполнение нерегламентированного резервного копирования.Дополнительные сведения см. в разделе Настройка резервного копирования в репликах доступности (SQL Server).

    Примечание

    Для просмотра приоритета автоматического резервного копирования существующей группы доступности необходимо выбрать столбец automated_backup_preference или automated_backup_preference_desc представления каталога sys.availability_groups.Кроме того, с помощью sys.fn_hadr_backup_is_preferred_replica (Transact-SQL) можно определить предпочитаемую резервную реплику.Эта функция всегда возвращает значение 1 при наличии хотя бы одной реплики, даже если AUTOMATED_BACKUP_PREFERENCE = NONE.

  • FAILURE_CONDITION_LEVEL = { 1 | 2 | 3 | 4 | 5 }
    Указывает, какие условия сбоя могут запустить автоматический переход на другой ресурс в этой группе доступности. Параметр FAILURE_CONDITION_LEVEL задается на уровне группы, однако он действует только в отношении реплик доступности, настроенных в режиме доступности синхронной фиксации (AVAILIBILITY_MODE = SYNCHRONOUS_COMMIT). Более того, условия сбоя могут запустить автоматический переход на другой ресурс только в том случае, если и первичная, и вторичная реплики настроены на режим автоматического перехода на другой ресурс (FAILOVER_MODE = AUTOMATIC), при этом вторичная реплика должна в данный момент быть синхронизирована с первичной.

    Уровни условий сбоя (1–5) варьируются от наименее ограничительного уровня 1 до наиболее ограничительного уровня 5. Заданный уровень условий включает в себя ограничения всех предыдущих уровней. Таким образом, наиболее строгий уровень 5 включает в себя ограничения уровней с 1 по 4, уровень 4 содержит ограничения уровней с 1 по 3 и т. д. Уровни условий сбоя описаны в следующей таблице.

    Уровень

    Условия сбоя

    1

    Указывают, что следует запустить автоматический переход на другой ресурс при возникновении любой из следующих ситуаций:

    2

    Указывает, что следует запустить автоматический переход на другой ресурс при возникновении любой из следующих ситуаций.

    • Экземпляр SQL Server не подключается к кластеру, а определяемый пользователем порог HEALTH_CHECK_TIMEOUT группы доступности превышен.

    • Реплика доступности находится в неисправном состоянии.

    3

    Указывает, что следует запустить автоматический переход на другой ресурс в случае появления критических внутренних ошибок SQL Server, таких как потерянные спин-блокировки, серьезные нарушения доступа для записи или формирование слишком больших дампов.

    Это режим по умолчанию.

    4

    Указывает, что следует запустить автоматический переход на другой ресурс в случае появления не столь серьезных внутренних ошибок SQL Server, например устойчивое состояние нехватки памяти в пуле внутренних ресурсов SQL Server.

    5

    Указывает, что следует запустить автоматический переход на другой ресурс при любом удовлетворяющим условиям состоянии сбоя, включая:

    • Исчерпание рабочих потоков SQL Engine.

    • Обнаружение неразрешимой взаимоблокировки.

    Примечание

    Отсутствие ответа экземпляра SQL Server на клиентские запросы не является существенным для групп доступности.

    Значения FAILURE_CONDITION_LEVEL и HEALTH_CHECK_TIMEOUT определяют гибкую политику отработки отказа для заданной группы. Данная гибкая политика отработки отказа предоставляет гранулярное управление условиями, которые могут вызвать автоматический переход на другой ресурс. Дополнительные сведения см. в разделе Гибкая политика отработки отказа для автоматического перехода на другой ресурс группы доступности (SQL Server).

  • HEALTH_CHECK_TIMEOUT = milliseconds
    Указывает время ожидания (в миллисекундах) возвращения сведений о состоянии сервера системной хранимой процедурой sp_server_diagnostics перед тем, как кластер WSFC признает, что сервер завис или его работа замедлена. HEALTH_CHECK_TIMEOUT представляет собой набор на уровне группы, применимый только на репликах доступности, настроенных для работы в режиме доступности синхронной фиксации с автоматическим переходом на другой ресурс (AVAILIBILITY_MODE = SYNCHRONOUS_COMMIT). Более того, время ожидания для проверки состояния системы может запустить автоматический переход на другой ресурс только в том случае, если первичная и вторичная реплики настроены на режим автоматического перехода на другой ресурс (FAILOVER_MODE = AUTOMATIC), при этом вторичная реплика должна быть в данный момент синхронизирована с первичной.

    Значение параметра HEALTH_CHECK_TIMEOUT по умолчанию — 30 000 миллисекунд (30 секунд). Минимальное значение — 15 000 миллисекунд (15 секунд), а максимальное значение — 4 294 967 295 миллисекунд.

    Важное примечаниеВажно!

    Хранимая процедура sp_server_diagnostics не выполняет проверку исправности на уровне базы данных.

  • DATABASE database_name
    Задает список из одной или нескольких пользовательских баз данных на локальном экземпляре SQL Server (то есть на экземпляре сервера, на котором создается группа доступности). Можно указать несколько баз данных для группы доступности, но каждая база данных может принадлежать только к одной группе доступности. Сведения о типе баз данных, которые могут поддерживаться группой доступности, см. в разделе предварительными требованиями, и ограничениями и рекомендациями для групп доступности AlwaysOn (SQL Server). Чтобы узнать, какие локальные базы данных уже принадлежат группе доступности, просмотрите столбец replica_id в представлении каталога sys.databases.

    Предложение DATABASE не является обязательным. Если параметр не указывается, новая группа доступности будет пустой.

    После создания группы доступности необходимо подключиться к каждому экземпляру сервера, где размещается вторичная реплика, а затем подготовить каждую базу данных-получатель и включить ее в группу доступности. Дополнительные сведения см. в разделе Запуск перемещения данных для базы данных-получателя AlwaysOn (SQL Server).

    Примечание

    Затем можно добавлять готовые базы данных в экземпляре сервера, где размещается текущая первичная реплика, в группу доступности.Также можно удалять базу данных из группы доступности.Дополнительные сведения см. в разделе ALTER AVAILABILITY GROUP (Transact-SQL).

  • REPLICA ON
    Указывает от одного до пяти экземпляров SQL Server для размещения реплик доступности в новой группе доступности. Каждая реплика задается по адресу экземпляра своего сервера, за которым следует предложение WITH (…). Как минимум необходимо указать экземпляр локального сервера, который станет начальной первичной репликой. Дополнительно можно указать до четырех вторичных реплик.

    Необходимо включить каждую вторичную реплику в группу доступности. Дополнительные сведения см. в разделе ALTER AVAILABILITY GROUP (Transact-SQL).

    Примечание

    Если при создании группы доступности будут заданы не все четыре реплики, дополнительные вторичные реплики можно добавить в любое время с помощью инструкции Transact-SQL ALTER AVAILABILITY GROUP.Эту инструкцию также можно использовать для удаления любой вторичной реплики из существующей группы доступности.

  • <экземпляр_сервера>
    Задает адрес экземпляра SQL Server, на котором размещена реплика. Формат адреса зависит от вида экземпляра (именованный или по умолчанию) и типа экземпляра (изолированный или экземпляр отказоустойчивого кластера):

    { 'system_name[\instance_name]' | 'FCI_network_name[\instance_name]' }

    Этот адрес состоит из следующих компонентов:

    • system_name
      Имя NetBIOS компьютера, на котором расположен целевой экземпляр SQL Server. Этот компьютер должен быть узлом кластера WSFC.

    • FCI_network_name
      Это сетевое имя, используемое для доступа к отказоустойчивому кластеру SQL Server. Используйте его, если экземпляр сервера является участником — партнером по обеспечению отработки отказа SQL Server. Выполнение SELECT @@SERVERNAME на экземпляре сервера FCI возвращает всю его строку 'FCI_network_name[\instance_name]' (то есть полное имя реплики).

    • instance_name
      Имя экземпляра SQL Server, размещенного на system_name или на FCI_network_name с включенной службой HADR. Для экземпляра сервера по умолчанию указание instance_name необязательно. В именах экземпляров не учитывается регистр символов. На экземпляре изолированного сервера это имя значения совпадает со значением, возвращаемым при выполнении инструкции SELECT @@SERVERNAME.

    • \
      Разделитель, используемый только при указании instance_name, чтобы отделить параметр от system_name или от FCI_network_name.

    Сведения о предварительных требованиях к узлам WSFC и экземплярам сервера см. в разделе предварительными требованиями, и ограничениями и рекомендациями для групп доступности AlwaysOn (SQL Server).

  • ENDPOINT_URL = 'TCP://system-address:port'
    Указывает путь URL для конечной точки зеркального отображения базы данных на экземпляре SQL Server, на котором размещается реплика доступности, заданная в текущем предложении REPLICA ON.

    Предложение ENDPOINT_URL является обязательным. Дополнительные сведения см. в разделе Выбор URL-адреса конечной точки при добавлении или изменении реплики доступности (SQL Server).

  • 'TCP://system-address:port'
    Задает URL-адрес для конечной точки или URL-адрес маршрутизации, доступный только для чтения. Параметры URL-адреса:

    • system-address
      Это строка, такая как адрес системы, полное доменное имя или IP-адрес, однозначно идентифицирующий целевую компьютерную систему.

    • port
      Номер порта, связанный с конечной точкой зеркального отображения экземпляра сервера-участника (для параметра ENDPOINT_URL), или номер порта, используемый компонентом Компонент Database Engine в экземпляре сервера (для параметра READ_ONLY_ROUTING_URL).

  • AVAILABILITY_MODE = { SYNCHRONOUS_COMMIT | ASYNCHRONOUS_COMMIT }
    Указывает, должна ли первичная реплика ждать подтверждения фиксации (записи) записей журнала на диск от вторичной реплики перед тем, как фиксировать транзакцию в указанной базе данных. Фиксация транзакций в других базах данных, расположенных в этой первичной реплике, может выполняться независимо.

    • SYNCHRONOUS_COMMIT
      Указывает, что первичная реплика может фиксировать транзакции только после их записи на данной вторичной реплике (режим синхронной фиксации). Вы можете указать SYNCHRONOUS_COMMIT не более чем для трех реплик, включая первичную.

    • ASYNCHRONOUS_COMMIT
      Указывает, что первичная реплика фиксирует транзакции без ожидания записи журнала на данной вторичной реплике (режим доступности синхронной фиксации). Вы можете указать ASYNCHRONOUS_COMMIT не более чем для пяти реплик доступности, включая первичную реплику.

    Предложение AVAILABILITY_MODE является обязательным. Дополнительные сведения см. в разделе Режимы доступности (группы доступности AlwaysOn).

  • FAILOVER_MODE = { AUTOMATIC | MANUAL }
    Указывает режим отработки отказов определяемой реплики доступности.

    • AUTOMATIC
      Включает автоматический переход на другой ресурс. Этот параметр поддерживается только в том случае, если также указывается AVAILABILITY_MODE = SYNCHRONOUS_COMMIT. Значение AUTOMATIC можно задать для двух реплик доступности, включая первичную.

      Примечание

      Экземпляры отказоустойчивого кластера SQL Server не поддерживают автоматический переход на другой ресурс с учетом групп доступности, поэтому любая реплика доступности, размещенная в них, должна быть настроена для перехода на другой ресурс вручную.

    • MANUAL
      Позволяет администратору базы данных осуществлять переход на другой ресурс по плану вручную или принудительно (обычно это называется принудительный переход на другой ресурс).

    Предложение FAILOVER_MODE является обязательным. Существует два вида перехода на другой ресурс вручную: переход на другой ресурс вручную без потери данных и принудительный переход на другой ресурс (с возможной потерей данных), которые поддерживаются в зависимости от различных условий. Дополнительные сведения см. в разделе Отработка отказа и режимы отработки отказа (группы доступности AlwaysOn).

  • BACKUP_PRIORITY **=**n
    Указывает приоритет выполнения резервного копирования на данной реплике по отношению к другим репликам из той же группы доступности. Значение представляет собой целое число в диапазоне от 0 до 100. Данные величины имеют следующие значения:

    • 1..100 показывает, что реплику доступности можно выбрать для выполнения резервного копирования. 1 указывает минимальный приоритет, 100 — наивысший приоритет. При BACKUP_PRIORITY = 1 реплика доступности будет выбрана для создания резервных копий только в том случае, если реплики доступности с более высоким приоритетом отсутствуют.

    • Значение 0 указывает, что эта реплика доступности никогда не будет использоваться для создания резервных копий. Этот параметр может быть полезным, например, для исключения удаленной реплики доступности, создание резервных копий на которой нежелательно.

    Дополнительные сведения см. в разделе Активные вторичные реплики: Активные вторичные реплики: резервное копирование на вторичных репликах (группы доступности AlwaysOn).

  • SECONDARY_ROLE ()
    Задает параметры роли, которые будут действовать, если эта реплика доступности в данный момент имеет вторичную роль (то есть когда реплика является вторичной). В скобках укажите один или два параметра вторичной роли. Если указываются оба параметра, используйте список с разделителями-запятыми.

    Параметры вторичной роли:

    • ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL }
      Указывает, могут ли базы данных заданной реплики доступности, играющей роль вторичной (т. е. служащей вторичной репликой), принимать соединения от клиентов. Может принимать одно из следующих значений:

      • NO
        Для баз данных-получателей этой реплики соединения пользователя не разрешаются. Для них не разрешен доступ для чтения. Это режим по умолчанию.

      • READ_ONLY
        Разрешаются только соединения с базами данных во вторичной реплике, у которых свойство «Назначение приложения» имеет значение ReadOnly. Дополнительные сведения об этом свойстве см. в разделе Использование ключевых слов строки подключения с собственным клиентом SQL Server.

      • ALL
        К базам данных во вторичной реплике разрешаются все соединения на доступ только для чтения.

      Дополнительные сведения см. в разделе Активные вторичные реплики: Доступ только для чтения к вторичным репликам (группы доступности AlwaysOn).

    • READ_ONLY_ROUTING_URL = 'TCP://system-address:port'
      Указывает URL-адрес, используемый для маршрутизации запросов на соединение с намерением чтения к этой реплике доступности. Этот URL-адрес прослушивается компонентом ядра СУБД SQL Server. Обычно экземпляр по умолчанию компонента ядра СУБД SQL Server прослушивает TCP-порт 1433.

      Номер порта для именованного экземпляра вы можете получить, запросив столбцы port и type_desc динамического административного представления sys.dm_tcp_listener_states. Экземпляр сервера использует прослушиватель Transact-SQL (type_desc = 'TSQL').

      Дополнительные сведения о вычислении URL-адреса маршрутизации только для чтения для реплики доступности см. в разделе Вычисление для AlwaysOn.

      Примечание

      Для именованного экземпляра SQL Server прослушиватель Transact-SQL должен быть настроен для использования определенного порта.Дополнительные сведения см. в разделе Настройка сервера для прослушивания указанного TCP-порта (диспетчер конфигурации SQL Server).

  • PRIMARY_ROLE ()
    Задает параметры роли, которые будут действовать, если эта реплика доступности в данный момент имеет первичную роль (то есть когда реплика является первичной). В скобках укажите один или два параметра первичной роли. Если указываются оба параметра, используйте список с разделителями-запятыми.

    Параметры первичной роли:

    • ALLOW_CONNECTIONS = { READ_WRITE | ALL }
      Указывает тип соединений, которые принимаются от клиентов базами данных заданной реплики доступности, которая играет роль первичной. Это может быть один из следующих типов:

      • READ_WRITE
        Соединения, у которых свойство «Назначение приложения» равно ReadOnly, не разрешены. Если свойство «Назначение приложения» имеет значение ReadWrite или не задано, то соединение разрешено. Дополнительные сведения о свойстве соединения «Назначение приложения» см. в разделе Использование ключевых слов строки подключения с собственным клиентом SQL Server.

      • ALL
        Разрешаются все соединения с базами данных в первичной реплике. Это режим по умолчанию.

    • READ_ONLY_ROUTING_LIST = { (‘<server_instance> [ ,...n ] ) | NONE }
      Задает список экземпляров сервера (с разделителями-запятыми), на которых будут размещаться реплики доступности для этой группы доступности, удовлетворяющие следующим требованиям при работе во вторичной роли.

      • Настроены для разрешения всех соединений или соединений только для чтения (см. выше аргумент ALLOW_CONNECTIONS параметра SECONDARY_ROLE).

      • Определен URL-адрес маршрутизации только для чтения (см. выше аргумент READ_ONLY_ROUTING_URL параметра SECONDARY_ROLE).

      READ_ONLY_ROUTING_LIST имеет следующие значения.

      • <экземпляр_сервера>
        Задает адрес экземпляра SQL Server, где размещается вторичная реплика доступности, которая доступна для чтения при работе во вторичной роли.

        Используйте список с разделителями-запятыми, чтобы указать все экземпляры сервера, где может размещаться доступная для чтения вторичная реплика. При маршрутизации только для чтения будет учитываться порядок, в котором экземпляры сервера заданы в списке. Если включить экземпляр сервера, где размещается реплика, в список маршрутизации только для чтения, то обычно рекомендуется поместить этот экземпляр сервера в конец списка, чтобы подключения с намерением чтения направлялись на вторичную реплику, если она доступна.

      • NONE
        Указывает, что, когда эта реплика доступности является первичной, маршрутизация только для чтения не поддерживается. Это режим по умолчанию.

  • SESSION_TIMEOUT = integer
    Указывает интервал времени ожидания сеанса в секундах. Если этот параметр не определить, интервал времени по умолчанию — 10 секунд. Минимальное значение составляет 5 секунд.

    Важное примечаниеВажно!

    Рекомендуется установить интервал времени ожидания в 10 секунд или более.

    Дополнительные сведения о периоде времени ожидания сеанса см. в разделе Обзор групп доступности AlwaysOn (SQL Server).

  • LISTENER dns_name ( <listener_option> )
    Определяет новый прослушиватель группы доступности. Аргумент LISTENER является необязательным.

    Важное примечаниеВажно!

    Перед созданием первого прослушивателя настоятельно рекомендуется прочитать раздел Создание или настройка прослушивателя группы доступности (SQL Server).

    После создания прослушивателя для заданной группы доступности настоятельно рекомендуется выполнить следующие действия.

    • Попросите сетевого администратора зарезервировать IP-адрес, который будет использоваться только этим прослушивателем.

    • Передайте имя узла DNS прослушивателя разработчикам приложения для использования в строке подключения при запросе клиентских соединений к данной группе доступности.

  • dns_name
    Указывает имя узла DNS для прослушивателя группы доступности. Имя DNS прослушивателя должно быть уникальным в домене и в NetBIOS.

    dns_name является строковым значением. Это имя может содержать только буквы, цифры, дефисы (-) и знаки подчеркивания (_) в любом порядке. В именах узлов DNS учитывается регистр. Максимальная длина составляет 63 символа.

    Мы рекомендуем указывать строку, которая поддается толкованию. Например, для группы доступности с именем AG1 понятным именем узла DNS будет ag1-listener.

    Важное примечаниеВажно!

    NetBIOS распознает только первые 15 символов в dns_name.При наличии двух кластеров WSFC, которые управляются одной службой Active Directory, и попытке создать в обоих кластерах прослушивателей группы доступности с именами, содержащими более 15 символов, и одинаковым префиксом из 15 символов возникнет ошибка, указывающая, что не удалось подключиться к ресурсу с именем виртуальной сети.Дополнительные сведения о правилах именования префиксов для имен DNS см. в разделе Присвоение имен доменов.

  • <listener_option>
    Аргумент LISTENER принимает один из следующих параметров <listener_option>:

    • WITH DHCP [ ON { (‘four_part_ipv4_address’,‘four_part_ipv4_mask’) } ]
      Указывает, что прослушиватель группы доступности будет использовать протокол DHCP. Дополнительно можно использовать предложение ON, чтобы определить сеть, для которой будет создан прослушиватель. Протокол DHCP имеет ограничение на работу только с одной подсетью для каждого экземпляра сервера, на котором размещается реплика доступности в группе доступности.

      Важное примечаниеВажно!

      Использовать протокол DHCP в производственной среде не рекомендуется.Если во время простоя аренда IP-адреса протокола DHCP истечет, то на регистрацию нового сетевого IP-адреса протокола DHCP, связанного с именем DNS-прослушивателя, уйдет дополнительное время, что скажется на производительности клиента.Однако протокол 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 ]
      Указывает, что вместо использования протокола DHCP прослушиватель группы доступности будет использовать один или несколько статических IP-адресов. Чтобы создать группу доступности, охватывающую несколько подсетей, в конфигурации прослушивателя должен присутствовать один статический IP-адрес для каждой подсети. Для конкретной подсети статический IP-адрес может иметь формат IPv4 или IPv6. Свяжитесь с администратором сети, чтобы получить статический IP-адрес для каждой подсети, в которой будет размещена реплика доступности для новой группы доступности.

      Например.

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

  • four_part_ipv4_address
    Задает IPv4-адрес, состоящий из четырех частей, для прослушивателя группы доступности. Например, 10.120.19.155.

  • four_part_ipv4_mask
    Задает IPv4-маску, состоящую из четырех частей, для прослушивателя группы доступности. Например, 255.255.254.0.

  • ipv6_address
    Задает IPv6-адрес для прослушивателя группы доступности. Например, 2001::4898:23:1002:20f:1fff:feff:b3a3.

  • PORT = listener_port
    Указывает номер порта ― listener_port ― для использования прослушивателем группы доступности, который задается предложением WITH IP. Параметр PORT является необязательным.

    По умолчанию поддерживается номер порта 1433. Однако из соображений безопасности, рекомендуется использовать другой номер порта.

    Например: WITH IP ( ('2001::4898:23:1002:20f:1fff:feff:b3a3') ) , PORT = 7777

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Требования и ограничения

Дополнительные сведения о предварительных условиях для создания группы доступности см. в разделе предварительными требованиями, и ограничениями и рекомендациями для групп доступности AlwaysOn (SQL Server).

Сведения об ограничениях инструкций Transact-SQL AVAILABILITY GROUP см. в разделе Обзор сведений об инструкциях Transact-SQL для групп доступности AlwaysOn (SQL Server).

Безопасность

Разрешения

Требуется членство в предопределенной роли сервера sysadmin и разрешение сервера CREATE AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP или CONTROL SERVER.

Примеры

А.Настройка резервного копирования на вторичных репликах, гибкие политики обработки отказов и доступ к соединению

В следующем примере создается группа доступности MyAg для двух пользовательских баз данных, ThisDatabase и ThatDatabase. В следующей таблице представлена сводка значений для параметров, установленных для группы доступности в целом.

Параметр группы

Настройка

Описание

AUTOMATED_BACKUP_PREFERENCE

SECONDARY

Параметр предпочтения автоматического резервного копирования указывает, что резервное копирование должно выполняться на вторичной реплике, за исключением тех случаев, когда в режиме «в сети» находится только первичная реплика (это режим по умолчанию). Чтобы параметр AUTOMATED_BACKUP_PREFERENCE как-то влиял на работу, необходимо создать скрипт заданий резервного копирования для баз данных доступности, чтобы они принимали в расчет предпочтения автоматического резервного копирования.

FAILURE_CONDITION_LEVEL

3

Настройка уровня условия сбоя указывает, что следует запустить автоматический переход на другой ресурс в случае появления критических внутренних ошибок SQL Server, таких как потерянные спин-блокировки, серьезные нарушения доступа для записи или формирование слишком больших дампов.

HEALTH_CHECK_TIMEOUT

600000

Значение времени ожидания проверки работоспособности в 60 секунд, указывает, что кластер WSFC будет ожидать в течение 60 000 миллисекунд, пока системная хранимая процедура sp_server_diagnostics не возвратит сведения о работоспособности экземпляра сервера, на котором размещена реплика с синхронной фиксацией с автоматическим копированием, до момента когда для кластера будет помечено, что экземпляр основного сервера работает медленно или завис. (Значение по умолчанию — 30 000 миллисекунд).

Три реплики доступности должны быть размещены на экземплярах сервера по умолчанию на компьютерах с именами COMPUTER01, COMPUTER02 и COMPUTER03. В следующей таблице приведена сводка значений, указанных в качестве параметров каждой реплики.

Параметр реплики

Настройка на COMPUTER01

Настройка на COMPUTER02

Настройка на COMPUTER03

Описание

ENDPOINT_URL

TCP://COMPUTER01:5022

TCP://COMPUTER02:5022

TCP://COMPUTER03:5022

В этом примере системы находятся в одном домене, поэтому URL-адреса конечной точки могут использовать имена компьютерной системы в качестве системного адреса.

AVAILABILITY_MODE

SYNCHRONOUS_COMMIT

SYNCHRONOUS_COMMIT

ASYNCHRONOUS_COMMIT

Две реплики используют режим синхронной фиксации. При синхронизации они поддерживают отработку отказа без потери данных. Третья реплика использует режим доступности с асинхронной фиксацией.

FAILOVER_MODE

AUTOMATIC

AUTOMATIC

MANUAL

Реплики с синхронной фиксацией поддерживают автоматический переход на другой ресурс и запланированный переход на другой ресурс вручную. Реплика режима доступности с синхронной фиксацией поддерживает только принудительный переход на другой ресурс вручную.

BACKUP_PRIORITY

30

30

90

Более высокий приоритет со значением 90 назначается реплике с асинхронной фиксацией, а не репликам с синхронной фиксацией. События резервного копирования чаще будут происходить на том экземпляре сервера, на котором размещена реплика с асинхронной фиксацией.

SECONDARY_ROLE

( ALLOW_CONNECTIONS = NO,

READ_ONLY_ROUTING_URL = 'TCP://COMPUTER01:1433' )

( ALLOW_CONNECTIONS = NO,

READ_ONLY_ROUTING_URL = 'TCP://COMPUTER02:1433' )

( ALLOW_CONNECTIONS = READ_ONLY, READ_ONLY_ROUTING_URL = 'TCP://COMPUTER03:1433' )

В качестве вторичной реплики с доступом для чтения может служить только реплика с асинхронной фиксацией.

Указывает имя компьютера и номер порта компонента ядра СУБД по умолчанию (1433).

Этот аргумент является необязательным.

PRIMARY_ROLE

( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (COMPUTER03) )

( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (COMPUTER03) )

( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = NONE )

В основной роли все реплики будут отвергать попытки подключения, направленные на чтение данных.

Запросы на соединение с намерением чтения будут направляться на компьютер COMPUTER03, если локальная реплика работает с вторичной ролью. Если эта реплика работает с первичной ролью, то маршрутизация только для чтения отключается.

Этот аргумент является необязательным.

SESSION_TIMEOUT

10

10

10

В этом примере указано значение времени ожидания завершения сеанса по умолчанию (10). Этот аргумент является необязательным.

И наконец, в примере указано необязательное предложение LISTENER, предназначенное для создания прослушивателя группы доступности для новой группы доступности. Для этого прослушивателя задается уникальное имя DNS — MyAgListenerIvP6. Две реплики находятся в разных подсетях, поэтому прослушивателю необходимо использовать статические IP-адреса. Для каждой из двух реплик доступности предложение WITH IP указывает статический IP-адрес 2001:4898:f0:f00f::cf3c и 2001:4898:e0:f213::4ce2, использующий формат IPv6. В этом примере также указывается и используется необязательный параметр PORT, указывающий порт 60173 в качестве порта прослушивателя.

CREATE AVAILABILITY GROUP MyAg 
   WITH (
      AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
      FAILURE_CONDITION_LEVEL  =  3, 
      HEALTH_CHECK_TIMEOUT = 600000
       )
   
   FOR 
      DATABASE  ThisDatabase, ThatDatabase 
   REPLICA ON 
      'COMPUTER01' WITH 
         (
         ENDPOINT_URL = 'TCP://COMPUTER01:5022',
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
         FAILOVER_MODE = AUTOMATIC,
         BACKUP_PRIORITY = 30,
         SECONDARY_ROLE (ALLOW_CONNECTIONS = NO, 
            READ_ONLY_ROUTING_LIST = (COMPUTER03) ), 
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE, 
            READ_ONLY_ROUTING_LIST = (COMPUTER03) ),
         SESSION_TIMEOUT = 10
         ), 
         
      'COMPUTER02' WITH 
         (
         ENDPOINT_URL = 'TCP://COMPUTER02:5022',
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
         FAILOVER_MODE = AUTOMATIC,
         BACKUP_PRIORITY = 30,
         SECONDARY_ROLE (ALLOW_CONNECTIONS = NO, 
            READ_ONLY_ROUTING_URL = 'TCP://COMPUTER02:1433' ),
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE, 
            READ_ONLY_ROUTING_LIST = (COMPUTER03) ),
         SESSION_TIMEOUT = 10
         ), 
         
      'COMPUTER03' WITH 
         (
         ENDPOINT_URL = 'TCP://COMPUTER03:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE =  MANUAL,
         BACKUP_PRIORITY = 90,
         SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY, 
            READ_ONLY_ROUTING_URL = 'TCP://COMPUTER03:1433' ),
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE, 
            READ_ONLY_ROUTING_LIST = NONE ),
         SESSION_TIMEOUT = 10
         )

LISTENER ‘MyAgListenerIvP6’ ( WITH IP ( ('2001:db88:f0:f00f::cf3c'),('2001:4898:e0:f213::4ce2') ) , PORT = 60173 ); 
GO

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Связанные задачи

Значок стрелки, используемый со ссылкой «В начало»[В начало]

См. также

Справочник

ALTER AVAILABILITY GROUP (Transact-SQL)

ALTER DATABASE SET HADR (Transact-SQL)

DROP AVAILABILITY GROUP (Transact-SQL)

Основные понятия

Поиск и устранение неисправностей конфигурации групп доступности AlwaysOn (SQL Server)

Обзор групп доступности AlwaysOn (SQL Server)

Прослушиватели групп доступности, возможность подключения клиентов и отработка отказа приложений (SQL Server)