2017-09-12 9 views
1

두 대의 SQL Server 2016 서버가 있으며 AlwaysOn Availabiliy를 구현하려고합니다.SQL Server AlwaysOn 가용성

첫 번째 서버는 두 번째 서버가

내가 folowing로 상시 가용성을 구성 READ_ONLY입니다

READ_WRITE입니다 :

CREATE AVAILABILITY GROUP ag 
WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY, 
DB_FAILOVER = OFF, 
DTC_SUPPORT = NONE, 
FAILURE_CONDITION_LEVEL = 3, 
HEALTH_CHECK_TIMEOUT = 30000) 
FOR DATABASE DATABASE_NAME 
REPLICA ON N'server1' WITH (ENDPOINT_URL = N'TCP://server1_adress:port', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SESSION_TIMEOUT = 10, BACKUP_PRIORITY = 50, SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://server1_adress:port')), 
N'server2' WITH (ENDPOINT_URL = N'TCP://server2_adress:5022', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SESSION_TIMEOUT = 10, BACKUP_PRIORITY = 50, PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=('server1'))) 
LISTENER N'listener_server' (
WITH IP 
((N'ip', N'mask') 
) 
, PORT=port); 

내 문제는 모든 쿼리가 첫 번째 서버로 라우팅됩니다이다.

두 서버 간의 읽기 쿼리의 균형을 유지하려면 AlwaysOn을 어떻게 구성해야합니까?

감사합니다.

("응용 프로그램 의도"라고 함) 읽기 전용 복제에 연결하는 SQL 서버에게 특별한 연결 문자열을 정의 할 필요가 모든

답변

0

첫째 :

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

당신이이 두 번째 단계에서 되는 경우 모든 노드에 대한 읽기 전용 액세스를 허용 보조 :

ALTER AVAILABILITY GROUP [ag] 
MODIFY REPLICA ON N'server1' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = 
READ_ONLY)) 
GO 
ALTER AVAILABILITY GROUP [ag] 
MODIFY REPLICA ON N'server2' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = 
READ_ONLY)) 
GO 

또한 추가 읽기 전용 서버 2에 URL을 라우팅 :

ALTER AVAILABILITY GROUP [ag] 
MODIFY REPLICA ON N'server2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = 
N'TCP://server2_adress:port')); 
GO 

다음 단계에서는 특정 서버가 기본 서버 일 때 서버가 연결되어야하는 라우팅 목록을 정의해야합니다. 이미 READ_ONLY_ROUTING_LIST를 (를) 정의했습니다. 그러나 하나의 서버에서만 가능합니다. server1이 중단되면 어떻게됩니까? 가능한 기본 노드마다 라우팅 목록을 정의해야합니다. SQL 서버 2016 년은 AlwaysOn의 기능을 균형 새로운 부하

ALTER AVAILABILITY GROUP [ag] 
MODIFY REPLICA ON 
N'server1' WITH 
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('server2','server1'))); 

ALTER AVAILABILITY GROUP [ag] 
MODIFY REPLICA ON 
N'server2' WITH 
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('server1','server2'))); 
GO 

, 당신은 읽기 전용 연결을 허용 적어도 세 번째 읽기 전용 노드를 필요 "중첩"라우팅 목록 구성 :

ALTER AVAILABILITY GROUP ag 
MODIFY REPLICA ON N'server1' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST= 
(('server2', 'server3'), 'server1')));