DBAtlas · 데이터베이스 운영 아틀라스

리스너, IP, 읽기 전용 라우팅 구성 확인

SQL ServerAlways On 및 HA

명령어

-- Listener, port and IP states:
SELECT ag.name AS ag_name, l.dns_name, l.port, l.is_conformant,
       ip.ip_address, ip.ip_subnet_mask, ip.state_desc
FROM   sys.availability_group_listeners l
  JOIN sys.availability_groups ag ON ag.group_id = l.group_id
  LEFT JOIN sys.availability_group_listener_ip_addresses ip ON ip.listener_id = l.listener_id;

-- Read-only routing list: where read intent goes when X is primary:
SELECT ag.name AS ag_name, pr.replica_server_name AS when_primary_is,
       rl.routing_priority, sr.replica_server_name AS route_to,
       sr.read_only_routing_url, sr.secondary_role_allow_connections_desc
FROM   sys.availability_read_only_routing_lists rl
  JOIN sys.availability_replicas pr ON pr.replica_id = rl.replica_id
  JOIN sys.availability_replicas sr ON sr.replica_id = rl.read_only_replica_id
  JOIN sys.availability_groups ag   ON ag.group_id = pr.group_id
ORDER BY ag.name, when_primary_is, rl.routing_priority;

-- Replica endpoint and connection settings:
SELECT replica_server_name, endpoint_url, read_only_routing_url,
       secondary_role_allow_connections_desc, seeding_mode_desc, session_timeout
FROM   sys.availability_replicas;

-- Routing test from the command line (-d is required with -K ReadOnly):
-- sqlcmd -S tcp:AGL-Musteri,1433 -d Musteri -E -M -K ReadOnly -Q "SELECT @@SERVERNAME"

하는 일

리스너 DNS 이름, 포트, 각 서브넷 IP의 클러스터 상태를 보여 준다. 읽기 전용 라우팅 목록의 각 primary 시나리오에서 read-intent 연결이 어떤 replica와 URL로 라우팅되는지 보여 준다.

사용 시점

페일오버 후 애플리케이션이 연결하지 못할 때, ApplicationIntent=ReadOnly 연결이 primary로 갈 때, 또는 새 서브넷/replica가 추가되었을 때.

주의

읽기 전용 라우팅은 ApplicationIntent=ReadOnly와 명시적 데이터베이스로 리스너를 통해 연결한 경우에만 동작한다. 인스턴스 이름으로 직접 연결하면 라우팅되지 않는다. read_only_routing_url이 비어 있는 replica는 라우팅 대상이 될 수 없다. 다중 서브넷 리스너에서 MultiSubnetFailover=True가 없는 클라이언트는 페일오버 후 20-30초 연결 타임아웃을 겪는다. 읽기 전용 쿼리이며 안전함.

DBAtlas에서 열기 →

관련 항목