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)} |
[참고자료]
2018-06-06 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com
SQL Server, MS SQL, SQL replication, Replication Enhancement, SQL 복제, 복제 에이전트, 복제 기능 향상, replication agent
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server 2016 향상된 복제 기능 – 배포 데이터베이스 클린업 향상 (0) | 2019.03.25 |
---|---|
SQL Server 2017향상된 복제 기능 – 배포 데이터베이스의 AG 지원 (0) | 2019.03.25 |
SQL Server update on Docker (0) | 2019.03.25 |
SQL Server 2017에서 향상된 UDF 실행 계획 (0) | 2019.03.25 |
ETL data error with MariaDB ODBC 3.0 (from Aurora to MS SQL) (1) | 2019.03.25 |