SQL Server 2014에서 읽기 전용 라우팅을 지원하도록 AlwaysOn 가용성 그룹을 구성하려면 Transact-SQL 또는 PowerShell을 사용할 수 있습니다. 읽기 전용 라우팅 은 SQL Server가 한정된 읽기 전용 연결 요청을 사용 가능한 AlwaysOn 읽기 가능 보조 복제본 (즉, 보조 역할에서 실행할 때 읽기 전용 워크로드를 허용하도록 구성된 복제본)으로 라우팅하는 기능을 나타냅니다. 읽기 전용 라우팅을 지원하려면 가용성 그룹에 가용성 그룹 수신기가 있어야 합니다. 읽기 전용 클라이언트는 연결 요청을 이 수신기로 전달해야 하며 클라이언트의 연결 문자열은 애플리케이션 의도를 "읽기 전용"으로 지정해야 합니다. 즉, 읽기 의도 연결 요청이어야 합니다.
비고
읽기 가능한 보조 복제본을 구성하는 방법에 대한 자세한 내용은 가용성 복제본 에서 Read-Only 액세스 구성(SQL Server)을 참조하세요.
비고
읽기 전용 라우팅 구성은 SQL Server Management Studio에서 지원되지 않습니다.
시작하기 전에
필수 조건
가용성 그룹에는 가용성 그룹 수신기가 있어야 합니다. 자세한 내용은 가용성 그룹 수신기 만들기 또는 구성(SQL Server)을 참조하세요.
하나 이상의 가용성 복제본이 보조 역할(즉, 읽기 가능한 보조 복제본(AlwaysOn%20Availability%20Groups).md)에서 읽기 전용을 허용하도록 구성해야 합니다. 자세한 내용은 가용성 복제본에서 Read-Only 액세스 구성(SQL Server)을 참조하세요.
현재 기본 복제본을 호스팅하는 서버 인스턴스에 연결되어 있어야 합니다.
Read-Only 라우팅을 지원하도록 구성해야 하는 복제본 속성은 무엇인가요?
읽기 전용 라우팅을 지원하는 읽기 가능한 각 보조 복제본에 대해 읽기 전용 라우팅 URL을 지정해야 합니다. 이 URL은 로컬 복제본이 보조 역할로 실행되는 경우에만 적용됩니다. 필요에 따라 읽기 전용 라우팅 URL을 복제본별로 지정해야 합니다. 각 읽기 전용 라우팅 URL은 읽기 전용 연결 요청을 읽기 가능한 특정 보조 복제본으로 라우팅하는 데 사용됩니다. 일반적으로 읽기 가능한 모든 보조 복제본에는 읽기 전용 라우팅 URL이 할당됩니다.
가용성 복제본에 대한 읽기 전용 라우팅 URL을 계산하는 방법에 대한 자세한 내용은 AlwaysOn에 대한 read_only_routing_url 계산을 참조하세요.
주 복제본인 경우 읽기 전용 라우팅을 지원하려는 각 가용성 복제본에 대해 읽기 전용 라우팅 목록을 지정해야 합니다. 지정된 읽기 전용 라우팅 목록은 로컬 복제본이 주 역할로 실행되는 경우에만 적용됩니다. 이 목록은 필요에 따라 복제본별로 지정해야 합니다. 일반적으로 각 읽기 전용 라우팅 목록에는 목록 끝에 로컬 복제본의 URL과 함께 모든 읽기 전용 라우팅 URL이 포함됩니다.
비고
읽기 의도 연결 요청은 현재 주 복제본의 읽기 전용 라우팅 목록에서 사용 가능한 첫 번째 읽기 가능한 보조 복제본으로 라우팅됩니다. 부하 분산이 없습니다.
비고
가용성 그룹 수신기 및 읽기 전용 라우팅에 대한 자세한 내용은 가용성 그룹 수신기, 클라이언트 연결 및 애플리케이션 장애 조치(failover)(SQL Server)를 참조하세요.
안전
권한
| 과업 | 권한 |
|---|---|
| 가용성 그룹을 만들 때 복제본을 구성하려면 | sysadmin 고정 서버 역할의 멤버 자격과 CREATE AVAILABILITY GROUP 서버 권한, ALTER ANY AVAILABILITY GROUP 권한, CONTROL SERVER 권한 중 하나가 필요합니다. |
| 가용성 복제본을 수정하려면 | 가용성 그룹에 대한 ALTER AVAILABILITY GROUP 권한, CONTROL AVAILABILITY GROUP 권한, ALTER ANY AVAILABILITY GROUP 권한 또는 CONTROL SERVER 권한이 필요합니다. |
Transact-SQL 사용
읽기 전용 라우팅을 구성하려면
비고
코드 예제는 이 섹션의 뒷부분에 있는 예제(Transact-SQL)를 참조하세요.
기본 복제본을 호스팅하는 서버 인스턴스에 연결합니다.
새 가용성 그룹에 대한 복제본을 지정하는 경우 CREATE AVAILABILITY GROUPTransact-SQL 문을 사용합니다. 기존 가용성 그룹에 대한 복제본을 추가하거나 수정하는 경우 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 주소 등의 문자열입니다.항구
SQL Server 인스턴스의 데이터베이스 엔진에서 사용하는 포트 번호입니다.예:
SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433')MODIFY REPLICA 절에서 복제본이 읽기 전용 연결을 허용하도록 이미 구성된 경우 ALLOW_CONNECTIONS 선택 사항입니다.
주 역할에 대한 읽기 전용 라우팅을 구성하려면 ADD REPLICA 또는 MODIFY REPLICA WITH 절에서 다음과 같이 PRIMARY_ROLE 옵션을 지정합니다.
PRIMARY_ROLE ( READ_ONLY_ROUTING_LIST =('
server' [ ,... n ] ))여기서 서버 는 가용성 그룹에서 읽기 전용 보조 복제본을 호스트하는 서버 인스턴스를 식별합니다.
예:
PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('Server1','Server2'))비고
읽기 전용 라우팅 목록을 구성하기 전에 읽기 전용 라우팅 URL을 설정해야 합니다.
예제 (Transact-SQL)
다음 예제에서는 기존 가용성 그룹의 AG1 두 가용성 복제본을 수정하여 이러한 복제본 중 하나가 현재 주 역할을 소유하는 경우 읽기 전용 라우팅을 지원합니다. 가용성 복제본을 호스트하는 서버 인스턴스를 식별하기 위해, 이 예제에서는 COMPUTER01 및 COMPUTER02 인스턴스를 지정합니다.
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)를 참조하세요.
기본값(
cd)을 주 복제본을 호스트하는 서버 인스턴스로 설정합니다.가용성 그룹에 가용성 복제본을 추가할 때 cmdlet을
New-SqlAvailabilityReplica사용합니다. 기존 가용성 복제본을 수정할 때 cmdlet을Set-SqlAvailabilityReplica사용합니다. 관련 매개 변수는 다음과 같습니다.보조 역할에 대한 읽기 전용 라우팅을 구성하려면 ReadonlyRoutingConnectionUrl"
url" 매개 변수를 지정합니다.여기서 URL 은 읽기 전용 연결을 위해 복제본으로 라우팅할 때 사용할 FQDN(연결 정규화된 도메인 이름) 및 포트입니다. 예:
-ReadonlyRoutingConnectionUrl "TCP://DBSERVER8.manufacturing.Adventure-Works.com:7024"기본 역할에 대한 연결 액세스를 구성하려면 ReadonlyRoutingList
server[ ,...n ]를 지정하십시오. 여기서 서버는 가용성 그룹 내에서 읽기 전용 보조 복제본을 호스트하는 서버 인스턴스를 지정합니다. 예:-ReadOnlyRoutingList "SecondaryServer","PrimaryServer"비고
읽기 전용 라우팅 목록을 구성하기 전에 복제본의 읽기 전용 라우팅 URL을 설정해야 합니다.
비고
cmdlet의 구문을 보려면 SQL Server PowerShell 환경에서
Get-Helpcmdlet을 사용하십시오. 자세한 내용은 SQL Server PowerShell 도움말을 참조하세요.
SQL Server PowerShell 공급자를 설정하고 사용하려면 SQL Server PowerShell 공급자 및 도움말 SQL Server PowerShell을 참조하세요.
예제(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
후속 작업: Read-Only 라우팅을 구성한 후
현재 주 복제본과 읽기 가능한 보조 복제본이 두 역할 모두에서 읽기 전용 라우팅을 지원하도록 구성되면 읽기 가능한 보조 복제본은 가용성 그룹 수신기를 통해 연결하는 클라이언트에서 읽기 전용 연결 요청을 받을 수 있습니다.
팁 (조언)
bcp 유틸리티 또는 sqlcmd 유틸리티를 사용하는 경우 스위치를 지정하여 읽기 전용 액세스를 사용하도록 설정된 보조 복제본에 대한 읽기 전용 액세스를 지정할 -K ReadOnly 수 있습니다.
클라이언트 Connection-Strings 대한 요구 사항 및 권장 사항
클라이언트 애플리케이션이 읽기 전용 라우팅을 사용하려면 연결 문자열이 다음 요구 사항을 충족해야 합니다.
TCP 프로토콜을 사용합니다.
애플리케이션 의도 특성/속성을 읽기 전용으로 설정합니다.
읽기 전용 라우팅을 지원하도록 구성된 가용성 그룹의 수신기를 참조합니다.
해당 가용성 그룹의 데이터베이스를 참조합니다.
또한 연결 문자열은 각 서브넷의 각 복제본에 대해 병렬 클라이언트 스레드를 지원하는 다중 서브넷 장애 조치(failover)를 사용하도록 설정하는 것이 좋습니다. 이렇게 하면 장애 조치(failover) 후 클라이언트 다시 연결 시간이 최소화됩니다.
연결 문자열의 구문은 애플리케이션에서 사용하는 SQL Server 공급자에 따라 달라집니다. 다음은 SQL Server용 .NET Framework Data Provider 4.0.2의 읽기 전용 라우팅에 필요한 및 추천되는 연결 문자열의 일부를 보여주는 예제입니다.
Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True
읽기 전용 애플리케이션 의도 및 읽기 전용 라우팅에 대한 자세한 내용은 가용성 그룹 수신기, 클라이언트 연결 및 애플리케이션 장애 조치(failover)(SQL Server)를 참조하세요.
Read-Only 라우팅이 제대로 작동하지 않는 경우
읽기 전용 라우팅 구성 문제 해결에 대한 자세한 내용은 라우팅이 제대로 작동하지 않는Read-Only 참조하세요.
관련 작업
읽기 전용 라우팅 구성을 보려면
sys.availability_replicas(Transact-SQL)(read_only_routing_url 열)
클라이언트 연결 액세스를 구성하려면
애플리케이션에서 연결 문자열을 사용하려면
관련 내용
블로그:
AlwaysOn에 대한 read_only_routing_url 계산
백서:
또한 참조하십시오
AlwaysOn 가용성 그룹 개요(SQL Server)
AlwaysOn 가용성 그룹 개요(SQL Server)
활성 보조: 읽기 가능한 보조 복제(AlwaysOn 가용성 그룹)
가용성 복제본에 대한 클라이언트 연결 액세스 정보(SQL Server)
가용성 그룹 리스너, 클라이언트 연결, 및 애플리케이션 페일오버 (SQL Server)