다음을 통해 공유


가용성 그룹에 대한 읽기 전용 라우팅 구성(SQL Server)

SQL Server 2014에서 읽기 전용 라우팅을 지원하도록 AlwaysOn 가용성 그룹을 구성하려면 Transact-SQL 또는 PowerShell을 사용할 수 있습니다. 읽기 전용 라우팅은 한정된 읽기 전용 연결 요청을 사용 가능한 AlwaysOn 읽기 가능한 보조 복제본(replica) 라우팅하는 SQL Server 기능을 나타냅니다(즉, 보조 역할에서 실행할 때 읽기 전용 워크로드를 허용하도록 구성된 복제본(replica)). 읽기 전용 라우팅을 지원하려면 가용성 그룹에 가용성 그룹 수신기가 있어야 합니다. 읽기 전용 클라이언트는 해당 연결 요청을 이 수신기에 전달해야 하며, 클라이언트의 연결 문자열에서는 애플리케이션 의도를 "읽기 전용"으로 지정해야 합니다. 즉, 읽기 의도 연결 요청이어야 합니다.

참고

읽기 가능한 보조 복제본을 구성하는 방법은 가용성 복제본에 대한 읽기 전용 액세스 구성(SQL Server)을 참조하세요.

참고

읽기 전용 라우팅 구성은 SQL Server Management Studio 지원되지 않습니다.

시작하기 전에

필수 조건

읽기 전용 라우팅을 지원하도록 구성하는 데 필요한 복제본 속성

  • 읽기 전용 라우팅을 지원할 읽기 가능한 보조 복제본 각각에 대해 읽기 전용 라우팅 URL을 지정해야 합니다. 이 URL은 로컬 복제본이 보조 역할로 실행되는 경우에만 적용됩니다. 필요에 따라 복제본별로 읽기 전용 라우팅 URL을 지정해야 합니다. 각 읽기 전용 라우팅 URL은 읽기 전용 연결 요청을 지정된 읽기 가능한 보조 복제본으로 라우팅하는 데 사용됩니다. 일반적으로 모든 읽기 가능한 보조 복제본에는 읽기 전용 라우팅 URL이 할당됩니다.

    가용성 복제본에 대한 읽기 전용 라우팅 URL을 계산하는 방법에 대한 자세한 내용은 AlwaysOn에 대한 read_only_routing_url 계산을 참조하십시오.

  • 주 복제본으로 사용될 때 읽기 전용 라우팅을 지원하도록 할 각 가용성 복제본에 대해 읽기 전용 라우팅 목록을 지정해야 합니다. 지정된 읽기 전용 라우팅 목록은 로컬 복제본이 주 역할로 실행되는 경우에만 적용됩니다. 필요에 따라 복제본별로 이 목록을 지정해야 합니다. 일반적으로 각 읽기 전용 라우팅 목록의 끝에는 로컬 복제본의 URL과 함께 모든 읽기 전용 라우팅 URL이 포함됩니다.

    참고

    읽기 전용 연결 요청은 현재 주 복제본의 읽기 전용 라우팅 목록에 있는 사용 가능하고 읽기 가능한 첫 번째 보조 복제본으로 라우팅됩니다. 부하 분산은 없습니다.

참고

가용성 그룹 수신기 및 읽기 전용 라우팅에 대한 자세한 내용은 가용성 그룹 수신기, 클라이언트 연결 및 애플리케이션 장애 조치(failover)(SQL Server)를 참조하세요.

보안

사용 권한

Task 사용 권한
가용성 그룹을 만들 때 복제본을 구성하려면 CREATE AVAILABILITY GROUP 서버 권한, ALTER ANY AVAILABILITY GROUP 권한, CONTROL SERVER 권한 중 하나와 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.
가용성 복제본을 수정하려면 가용성 그룹에 대한 ALTER AVAILABILITY GROUP 권한, CONTROL AVAILABILITY GROUP 권한, ALTER ANY AVAILABILITY GROUP 권한 또는 CONTROL SERVER 권한이 필요합니다.

Transact-SQL 사용

읽기 전용 라우팅을 구성하려면

참고

코드 예제를 보려면 이 섹션의 뒷부분에 나오는 예(Transact-SQL)를 참조하세요.

  1. 주 복제본을 호스팅하는 서버 인스턴스에 연결합니다.

  2. 새 가용성 그룹의 복제본을 지정하려는 경우 CREATE AVAILABILITY GROUP Transact-SQL 문을 사용합니다. 기존 가용성 그룹에 대한 복제본(replica) 추가하거나 수정하는 경우 ALTER AVAILABILITY GROUPTransact-SQL 문을 사용합니다.

    • 보조 역할에 대한 읽기 전용 라우팅을 구성하려면 ADD REPLICA 또는 MODIFY REPLICA WITH 절에서 다음과 같이 SECONDARY_ROLE 옵션을 지정합니다.

      SECONDARY_ROLE ( READ_ONLY_ROUTING_URL ='TCP://system-address:'port)

      읽기 전용 라우팅 URL의 매개 변수는 다음과 같습니다.

      system-address
      대상 컴퓨터 시스템을 명확하게 식별하는 시스템 이름, 정규화된 도메인 이름 또는 IP 주소 등의 문자열입니다.

      port
      SQL Server 인스턴스의 데이터베이스 엔진에서 사용하는 포트 번호입니다.

      예: SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433')

      복제본이 읽기 전용 연결을 허용하도록 이미 구성되어 있는 경우 MODIFY REPLICA 절에서 ALLOW_CONNECTIONS는 선택 사항입니다.

      자세한 내용은 AlwaysOn에 대한 read_only_routing_url 계산을 참조하십시오.

    • 주 역할에 대한 읽기 전용 라우팅을 구성하려면 ADD REPLICA 또는 MODIFY REPLICA WITH 절에서 다음과 같이 PRIMARY_ROLE 옵션을 지정합니다.

      PRIMARY_ROLE ( READ_ONLY_ROUTING_LIST =('server' [ ,... n ] ))

      여기서 server 는 가용성 그룹의 읽기 전용 보조 복제본을 호스트하는 서버 인스턴스를 식별합니다.

      예: PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('Server1','Server2'))

      참고

      읽기 전용 라우팅 목록을 구성하기 전에 읽기 전용 라우팅 URL을 설정해야 합니다.

예제(Transact-SQL)

다음 예에서는 기존 가용성 그룹 AG1 의 두 가용성 복제본 중 하나가 현재 주 역할을 소유하고 있는 경우 가용성 복제본이 읽기 전용 라우팅을 지원하도록 수정합니다. 가용성 복제본을 호스팅하는 서버 인스턴스를 식별하려면 이 예제에서는 COMPUTER01COMPUTER02 인스턴스 이름을 지정합니다.

ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER01' WITH   
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));  
ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER01' WITH   
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));  
  
ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER02' WITH   
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));  
ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER02' WITH   
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));  
  
ALTER AVAILABILITY GROUP [AG1]   
MODIFY REPLICA ON  
N'COMPUTER01' WITH   
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));  
  
ALTER AVAILABILITY GROUP [AG1]   
MODIFY REPLICA ON  
N'COMPUTER02' WITH   
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));  
GO

PowerShell 사용

읽기 전용 라우팅을 구성하려면

참고

코드 예제를 보려면 이 섹션의 뒷부분에 나오는 예제(PowerShell)을 참조하세요.

  1. 기본값(cd)을 주 복제본을 호스팅하는 서버 인스턴스로 설정합니다.

  2. 가용성 그룹에 가용성 복제본을 추가하는 경우 New-SqlAvailabilityReplica cmdlet을 사용합니다. 기존 가용성 복제본을 수정하는 경우 Set-SqlAvailabilityReplica cmdlet을 사용합니다. 관련 매개 변수는 다음과 같습니다.

    • 보조 역할에 대한 읽기 전용 라우팅을 구성하려면 ReadonlyRoutingConnectionUrl"url" 매개 변수를 지정합니다.

      여기서 url 은 읽기 전용 연결을 위해 복제본으로 라우팅할 때 사용할 연결 FQDN(정규화된 도메인 이름) 및 포트입니다. 예: -ReadonlyRoutingConnectionUrl "TCP://DBSERVER8.manufacturing.Adventure-Works.com:7024"

      자세한 내용은 AlwaysOn에 대한 read_only_routing_url 계산을 참조하십시오.

    • 기본 역할에 대한 연결 액세스를 구성하려면 ReadonlyRoutingList""server [ ,... n ]입니다. 여기서 서버는 가용성 그룹에서 읽기 전용 보조 복제본(replica) 호스트하는 서버 instance 식별합니다. 예: -ReadOnlyRoutingList "SecondaryServer","PrimaryServer"

      참고

      복제본의 읽기 전용 라우팅 목록을 구성하기 전에 읽기 전용 라우팅 URL을 설정해야 합니다.

    참고

    cmdlet의 구문을 보려면 SQL Server PowerShell 환경에서 cmdlet을 사용합니다Get-Help. 자세한 내용은 Get Help SQL Server PowerShell을 참조하세요.

SQL Server PowerShell 공급자를 설정하고 사용하려면 PowerShell 공급자 SQL Server PowerShell SQL Server 도움말 보기를 참조하세요.

예제(PowerShell)

다음 예에서는 읽기 전용 라우팅을 위해 가용성 그룹에 주 복제본과 보조 복제본 하나를 구성합니다. 먼저, 이 예에서는 각 복제본에 읽기 전용 라우팅 URL을 할당합니다. 그런 다음 주 복제본에 읽기 전용 라우팅 목록을 설정합니다. 연결 문자열에 "ReadOnly" 속성이 설정된 연결은 보조 복제본으로 리디렉션됩니다. 이 보조 복제본을 읽을 수 없는 경우(ConnectionModeInSecondaryRole 설정으로 확인) 연결이 다시 주 복제본으로 전달됩니다.

Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg  
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"  
$secondaryReplica = Get-Item "AvailabilityReplicas\SecondaryServer"  
  
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://PrimaryServer.domain.com:1433" -InputObject $primaryReplica  
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://SecondaryServer.domain.com:1433" -InputObject $secondaryReplica  
Set-SqlAvailabilityReplica -ReadOnlyRoutingList "SecondaryServer","PrimaryServer" -InputObject $primaryReplica  

후속 작업: 읽기 전용 라우팅을 구성한 후의 작업

현재 주 복제본과 읽기 가능한 보조 복제본 두 역할 모두가 읽기 전용 라우팅을 지원하도록 구성되고 나면 읽기 가능한 보조 복제본은 가용성 그룹 수신기를 통해 연결한 클라이언트로부터 읽기 전용 연결 요청을 받을 수 있습니다.

bcp 유틸리티 또는 sqlcmd 유틸리티를 사용하는 경우 스위치를 지정하여 읽기 전용 액세스를 사용하도록 설정된 보조 복제본(replica) 대한 읽기 전용 액세스를 지정할 -K ReadOnly 수 있습니다.

클라이언트 연결 문자열에 대한 요구 사항 및 권장 사항

클라이언트 애플리케이션에서 읽기 전용 라우팅을 사용하려면 해당 연결 문자열이 다음 요구 사항을 충족해야 합니다.

  • TCP 프로토콜을 사용합니다.

  • 애플리케이션 의도 특성/속성을 읽기 전용으로 설정합니다.

  • 읽기 전용 라우팅을 지원하도록 구성된 가용성 그룹의 수신기를 참조합니다.

  • 해당 가용성 그룹의 데이터베이스를 참조합니다.

또한 연결 문자열에서 각 서브넷의 각 복제본에 대해 병렬 클라이언트 스레드를 지원하는 다중 서브넷 장애 조치(Failover)를 설정하는 것이 좋습니다. 이렇게 하면 장애 조치 후 클라이언트 재연결 시간이 최소화됩니다.

연결 문자열 구문은 애플리케이션에서 사용하는 SQL Server 공급자에 따라 달라집니다. 다음 예에 나온 .NET Framework Data Provider 4.0.2 for SQL Server용 연결 문자열은 읽기 전용 라우팅에 사용해야 하며 권장되는 연결 문자열을 보여 줍니다.

Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True  

읽기 전용 애플리케이션 의도 및 읽기 전용 라우팅에 대한 자세한 내용은 가용성 그룹 수신기, 클라이언트 연결 및 애플리케이션 장애 조치(failover)(SQL Server)를 참조하세요.

읽기 전용 라우팅이 올바르게 작동하지 않는 경우

읽기 전용 라우팅 구성 문제를 해결하는 방법은 읽기 전용 라우팅이 올바르게 작동하지 않음을 참조하세요.

관련 작업

읽기 전용 라우팅 구성을 보려면

클라이언트 연결 액세스를 구성하려면

애플리케이션에서 연결 문자열을 사용하려면

관련 내용

참고 항목

AlwaysOn 가용성 그룹 개요(SQL Server)
AlwaysOn 가용성 그룹 개요(SQL Server)
활성 보조 복제본: 읽기 가능한 보조 복제본(AlwaysOn 가용성 그룹)
가용성 복제본에 대한 클라이언트 연결 액세스 정보(SQL Server)
가용성 그룹 수신기, 클라이언트 연결 및 애플리케이션 장애 조치(failover)(SQL Server)