Развертывание и траблшутинг AlwaysOn Availability Groups в MSSQL
Сложности при развертывании и эксплуатации AlwaysOn Availability Groups:
- Группа доступности переходит в статус 'Not Synchronizing / Resolving';
- Сетевой слушатель (Availability Group Listener) недоступен по DNS или IP-адресу;
- Служба Windows Server Failover Cluster (WSFC) теряет кворум, приводя к падению всех реплик группы;
- Блокировки и задержки репликации в базах 1С:Предприятие.
1. Предварительные требования и включение функции AlwaysOn
Все ноды должны входить в состав Windows Server Failover Cluster (WSFC). Включите поддержку AlwaysOn в SQL Server Configuration Manager или через PowerShell:
Enable-SqlAlwaysOn -Path 'SQLSERVER:\SQL\NODE1\DEFAULT' -Force2. Создание группы доступности через T-SQL
USE [master];
GO
CREATE AVAILABILITY GROUP [AG_1C]
WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
FAILURE_CONDITION_LEVEL = 3,
HEALTH_CHECK_TIMEOUT = 30000)
FOR DATABASE [ERP_1C]
REPLICA ON
N'SQL-NODE1' WITH (
ENDPOINT_URL = N'TCP://SQL-NODE1.corp.local:5022',
FAILOVER_MODE = AUTOMATIC,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
BACKUP_PRIORITY = 50,
SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)
),
N'SQL-NODE2' WITH (
ENDPOINT_URL = N'TCP://SQL-NODE2.corp.local:5022',
FAILOVER_MODE = AUTOMATIC,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
BACKUP_PRIORITY = 50,
SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)
);
GO3. Создание сетевого слушателя (AG Listener)
ALTER AVAILABILITY GROUP [AG_1C]
ADD LISTENER N'AG-1C-LISTENER' (
WITH IP ((N'192.168.10.150', N'255.255.255.0')),
PORT = 1433
);
GO4. Диагностика состояния через динамические представления (DMV)
SELECT
r.replica_server_name,
d.database_name,
s.synchronization_state_desc,
s.synchronization_health_desc,
s.redo_queue_size,
s.log_send_queue_size
FROM sys.dm_hadr_database_replica_states s
JOIN sys.availability_replicas r ON s.replica_id = r.replica_id
JOIN sys.availability_databases_cluster d ON s.group_database_id = d.group_database_id; Частые вопросы (FAQ)
Почему Listener не переключается при сбое основного узла?
Проверьте права учетной записи кластера в Active Directory (объект CNO должен иметь право 'Create Computer Objects' в OU, где создается виртуальное имя слушателя), а также настройки кворума кластера WSFC.
Поддерживается ли AlwaysOn в редакции SQL Server Standard?
В редакции Standard поддерживаются Basic Availability Groups (ограничение: ровно одна база данных на группу, отсутствие вторичного чтения и бэкапов на реплике). Полноценный AlwaysOn требует редакции Enterprise.
Что означает статус реплики 'Resolving'?
Статус Resolving указывает на то, что узел временно потерял связь с кластером WSFC, либо происходит процесс голосования/перехода ролей (failover transitions).
Как перевести реплику в статус Read-Only для снятия отчетов?
Настройте SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY) и сконфигурируйте список маршрутизации только для чтения (ReadOnly Routing List).