SQL Server 2017 향상된 복제 기능  복제에이전트 프로필 매개변수의 동적 새로 고침

 

·      Version : SQL 2017

 

SQL Server 2017 CU3부터 SQL Server 복제 기능 향상으로 에이전트를 다시 시작하지 않고도 복제 에이전트 매개 변수의 변경 내용을 동적으로 다시 로드할  있다 개선 사항은 향후 SQL Server 2016  2014에도 적용될 예정이다.

 

복제는 에이전트 추적이라는  가지 독립실행형 프로그램을 사용하여 변경 내용을 추적  데이터 배포와 관련된 작업을 수행 한다예를 들어 트랜잭션 복제와 함께 사용되는 로그 판독기 에이전트는 게시자의 트랜잭션 로그에서 복제용으로 표시된 트랜잭션을 배포 데이터베이스로 이동한다트랜젝션 복제를 사용하여 게시된  데이터베이스에는 배포자에서 실행되고 게시자에 연결하는 자체 로그 판독기 에이전트가 있다.


 

많은 양의 DML 작업이 포함된 트래픽이 많은 시스템에서 복제를 사용하는 경우 고객은 들어오는 로드를 처리하기 위해 복제 에이전트의 처리량을 높이기 위해 기본 에이전트 프로파일을 조정해야하는 경우가 있다이러한 변경 사항을 적용하려면 다음 단계를 수행해야한다.

1.     변경  해당 작업이 필요한 에이전트 찾기 (여러 발행물  구독이 있는 경우 매우 복잡하고 시간이 오래 걸림)

2.     에이전트에 해당하는 작업 비활성화

3.     에이전트 중지

4.     프로파일 설정 변경

5.     에이전트와 관련된 작업을 다시 사용가능하도록 변경

6.     에이전트 시작

 

향상된 복제 기능에서는 에이전트를 다시 시작하지 않고도 프로파일의 매개변수를 동적으로 변경할  있다 에이전트 마다 아래에 명시된 파라메터를 동적으로 로드할  있다.

·       Log Reader Agent - Output, OutputVerboseLevel, PollingInterval, ReadBatchSize, ReadBatchThreshold

·       Distribution Agent - CommitBatchSize, CommitBatchThreshold, MaxDeliveredTransactions, PollingInterval, Output, OutputVerboseLevel, SubscriptionStreams

 

 에이전트 사용자 프로필이 만들어져 에이전트에 할당되면 관련 항목이 배포자 서버의 MSDB 데이터베이스에 있는 dbo.Msagent_profiles  dbo.MSagent_parameters테이블에 추가된다이러한 값은 replication agent 다시 시작될때마다 테이블에서 다시 로드된다 또한 프로파일에  프로파일 매개변수 “ProfileReloadInterval” 기본값 300초로 추가되었다 매개 변수는 에이전트가 테이블에서값을 다시 로드하는 간격으로 기본값을 사용하는 경우 에이전트는 5분마다 MSDB 테이블에서 값을 다시 로드한다위에서 언급한 매개변수   하나라도 변경되면 에이전트는 새로운 값을 사용한다.

 

프로필 매개변수  수정은 SQL Server Management Studio 사용하거나 저장프로시저 sp_change_agent_parameters 사용하여 변경할  있다. SSMS 18.0 버전부터는 에이전트 프로필 UI 해당 매개 변수를 동적으로 다시 로드할  있는지 나타내는 “Reloadable”이라는 추가 열을 확인할  있다.


 

매개 변수가 변경되고 동적으로 다시 로드되면 관련 정보가 Replication Agent로그에 추가된다예를 들어 아래 스니펫에서 에이전트를 다시 시작하지 않고도 “ReadBatchSize”값이 5000에서 500으로 변경되었음을   있다.

2018-02-24 07:45:30.213 Publisher: {call sp_replcmds (5000, 0, 0, , 5047, 500000)}

2018-02-24 07:45:35.264 Publisher: {call sp_replcmds (5000, 0, 0, , 5047, 500000)}

2018-02-24 07:45:39.939 OLE DB DistLog 'CAPTAINAMERICA': exec sp_MShelp_logreader_agentid 2, N'WideWorldImporters'

2018-02-24 07:45:40.020 OLE DB DistLog 'CAPTAINAMERICA': exec sp_MShelp_profile 2, 2, N'testProfile'

2018-02-24 07:45:40.324 Status: 4, code: 20085, text: 'The agent parameter '-ReadBatchSize' with value 500 is taking effect.'.

2018-02-24 07:45:40.507 Publisher: {call sp_replcmds (500, 0, 0, , 5250, 500000)}

2018-02-24 07:45:45.566 Publisher: {call sp_replcmds (500, 0, 0, , 5234, 500000)}

 

 

[참고자료]

https://blogs.msdn.microsoft.com/sql_server_team/sql-server-replication-enhancement-dynamic-reloading-of-agent-profile-parameters/

 

 

2018-06-06 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

SQL Server, MS SQL, SQL replication, Replication Enhancement, SQL 복제복제 에이전트복제 기능 향상, replication agent



출처: https://sqlmvp.tistory.com/1248?category=618825 [Database Lab]




profile

강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

Kakao Talk : SQLMVP

Line : jevida


현재 LA에 거주하고 있으며 SQL에 관심있는 분이면 언제든 친추 환영합니다.