다음을 통해 공유


복제 로그 판독기 에이전트

적용 대상: SQL Server Azure SQL Managed Instance

복제 로그 판독기 에이전트는 트랜잭션 복제를 위해 구성한 각 데이터베이스의 트랜잭션 로그를 모니터링하고 트랜잭션 로그에서 복제 대상으로 표시된 트랜잭션을 배포 데이터베이스에 복사하는 실행 파일입니다.

참고 항목

매개 변수는 순서에 따라 지정할 수 있습니다. 선택적 매개 변수를 지정하지 않으면 기본 에이전트 프로필을 기반으로 미리 정의된 값이 사용됩니다.

구문

logread [ -? ]
-Publisher server_name [ \instance_name ]
-PublisherDB publisher_database
[ -Continuous ]
[ -DefinitionFile def_path_and_file_name ]
[ -Distributor server_name[ \instance_name ] ]
[ -DistributorLogin distributor_login ]
[ -DistributorPassword distributor_password ]
[ -DistributorSecurityMode [ 0 | 1 ] ]
[ -EncryptionLevel [ 0 | 1 | 2 ] ]
[ -ExtendedEventConfigFile configuration_path_and_file_name ]
[ -HistoryVerboseLevel [ 0 | 1 | 2 ] ]
[ -KeepAliveMessageInterval keep_alive_message_interval_seconds ]
[ -LoginTimeOut login_time_out_seconds ]
[ -LogScanThreshold scan_threshold ]
[ -MaxCmdsInTran number_of_commands ]
[ -MessageInterval message_interval ]
[ -MultiSubnetFailover [ 0 | 1 ] ]
[ -Output output_path_and_file_name ]
[ -OutputVerboseLevel [ 0 | 1 | 2 | 3 | 4 ] ]
[ -PacketSize packet_size ]
[ -PollingInterval polling_interval ]
[ -ProfileName profile_name ]
[ -PublisherFailoverPartner server_name[ \instance_name ] ]
[ -PublisherSecurityMode [ 0 | 1 ] ]
[ -PublisherLogin publisher_login ]
[ -PublisherPassword publisher_password ]
[ -QueryTimeOut query_time_out_seconds ]
[ -ReadBatchSize number_of_transactions ]
[ -ReadBatchThreshold read_batch_threshold ]
[ -RecoverFromDataErrors ]

인수

-?

사용 정보를 표시합니다.

-Publisher server_name [ \instance_name ]

게시자의 이름입니다. 해당 서버에서 SQL Server의 기본 인스턴스를 지정 <server_name> 합니다. 해당 서버에서 명명된 SQL Server 인스턴스를 지정 <server_name>\<instance_name> 합니다.

-PublisherDB publisher_database

게시자 데이터베이스의 이름입니다.

-Continuous

에이전트가 복제된 트랜잭션을 지속적으로 폴링하려고 하는지 여부를 지정합니다. 이 인수가 지정된 경우 에이전트는 보류 중인 트랜잭션이 없는 경우에도 원본의 복제된 트랜잭션을 폴링 간격에 따라 폴링합니다.

-DefinitionFile def_path_and_file_name

에이전트 정의 파일의 경로입니다. 에이전트 정의 파일에는 에이전트에 대한 명령줄 인수가 포함되어 있습니다. 파일 내용은 실행 파일로 구문 분석됩니다. 큰따옴표(")를 사용하여 임의의 문자가 포함된 인수 값을 지정합니다.

-Distributor server_name [ \instance_name ]

배포자 이름입니다. 해당 서버에서 SQL Server의 기본 인스턴스를 지정 <server_name> 합니다. 해당 서버에서 명명된 SQL Server 인스턴스를 지정 <server_name>\<instance_name> 합니다.

-DistributorLogin distributor_login

배포자 로그인 이름입니다.

-DistributorPassword distributor_password

배포자 암호입니다.

-DistributorSecurityMode [ 0 | 1 ]

배포자의 보안 모드를 지정합니다. 값 0 은 SQL Server 인증 모드(기본값)를 나타내고 값은 1 Windows 인증 모드를 나타냅니다.

-EncryptionLevel [ 0 | 1 | 2 ]

이전에 SSL(Secure Sockets Layer)로 알려진 TLS(전송 계층 보안) 수준이며, 연결을 만들 때 로그 판독기 에이전트에서 사용하는 암호화입니다.

EncryptionLevel 값 설명
0 TLS가 사용되지 않도록 지정합니다.
1 TLS가 사용되도록 지정하지만 에이전트는 TLS 서버 인증서가 신뢰할 수 있는 발급자에서 서명되었는지 확인하지 않습니다.
2 TLS가 사용되고 인증서가 확인되도록 지정합니다.

참고 항목

유효한 TLS/SSL 인증서는 SQL Server의 정규화된 도메인 이름으로 정의됩니다. 설정할 -EncryptionLevel 때 에이전트가 성공적으로 연결되도록 하려면 2로컬 SQL Server에 별칭을 만듭니다. 'Alias Name' 매개 변수는 서버 이름이어야 하며 'Server' 매개 변수는 SQL Server의 정규화된 이름으로 설정해야 합니다.

자세한 내용은 복제 보안 설정 보기 및 수정을 참조하세요.

-ExtendedEventConfigFile configuration_path_and_file_name

확장 이벤트 XML 구성 파일의 경로 및 파일 이름을 지정합니다. 확장 이벤트 구성 파일을 사용하면 세션을 구성하고 추적을 위해 이벤트를 사용하도록 설정할 수 있습니다. 내부용으로만 사용됩니다.

-HistoryVerboseLevel [ 0 | 1 | 2 ]

로그 판독기 작업 중에 기록된 기록의 양을 지정합니다. 를 선택하여 기록 로깅의 성능 효과를 최소화할 수 있습니다 1.

HistoryVerboseLevel 값 설명
0 없음
1(기본값) 항상 동일한 상태(시작, 진행률, 성공 등)의 이전 기록 메시지를 업데이트합니다. 상태가 같은 이전 레코드가 없으면 새 레코드를 삽입합니다.
2 레코드가 유휴 메시지 또는 장기 실행 작업 메시지와 같은 항목에 대한 레코드가 아니면 새 기록 레코드를 삽입합니다. 이 경우 이전 레코드를 업데이트합니다.

-KeepAliveMessageInterval keep_alive_message_interval_seconds

기록 스레드가 서버의 응답을 기다리는 기존 연결이 있는지 확인하기 전의 시간(초)입니다. 장기 실행 일괄 처리를 실행할 때 검사 에이전트가 로그 판독기 에이전트를 용의자로 표시하지 않도록 이 값을 줄일 수 있습니다. 기본값은 300초입니다.

-LoginTimeOut login_time_out_seconds

로그인 시간이 초과되기 전의 시간(초)입니다. 기본값은 15초입니다.

-LogScanThreshold scan_threshold

정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다.

-MaxCmdsInTran number_of_commands

로그 판독기에서 배포 데이터베이스에 명령을 쓸 때 트랜잭션으로 그룹화된 최대 문 수를 지정합니다. 이 매개 변수를 사용하면 로그 판독기 에이전트 및 배포 에이전트 구독자에서 적용할 때 게시자의 큰 트랜잭션(많은 명령으로 구성됨)을 여러 개의 작은 트랜잭션으로 나눌 수 있습니다. 이 매개 변수를 지정하면 배포자에서 경합을 줄이고 게시자와 구독자 간의 대기 시간을 줄일 수 있습니다. 원래 트랜잭션은 더 작은 단위로 적용되므로 구독자는 원래 트랜잭션이 끝나기 전에 큰 논리 게시자 트랜잭션의 행에 액세스하여 엄격한 트랜잭션 원자성을 손상시킬 수 있습니다. 기본값은 0게시자의 트랜잭션 경계를 유지하는 것입니다.

이 매개 변수는 SQL Server가 아닌 게시에 대해 무시됩니다. 자세한 내용은 트랜잭션 집합 작업 구성을 참조 하세요.

MaxCmdsInTran 은 항상 켜지도록 설계되지 않았습니다. 단일 트랜잭션에서 실수로 많은 수의 DML 작업을 수행한 경우를 해결합니다. 이로 인해 전체 트랜잭션이 배포 데이터베이스에, 잠금이 유지될 때까지 명령 배포가 지연됩니다. 이 상황에 일상적으로 해당하는 경우 애플리케이션을 검토하고 트랜잭션 크기를 줄이는 방법을 찾습니다.

Warning

큰 트랜잭션을 복제하는 동안 매개 변수가 MaxCmdsInTran 추가되고 제거되면 기본 키 오류가 발생할 수 있습니다. 대규모 트랜잭션의 기본 키 오류를 해결하려면 트랜잭션이 MaxCmdsInTran 배포 데이터베이스에 복제될 때까지 매개 변수를 다시 추가합니다.

MaxCmdsInTran CDC(변경 데이터 캡처)와 복제를 모두 사용하도록 설정된 데이터베이스에서 매개 변수를 사용하는 것은 지원되지 않으며 CDC 변경 테이블에서 데이터가 손실될 수 있습니다.

-MessageInterval message_interval

기록 로깅에 사용되는 시간 간격입니다. 기록 이벤트는 마지막 기록 이벤트가 기록된 MessageInterval 후 값에 도달하면 기록됩니다.

원본에서 사용할 수 있는 복제된 트랜잭션이 없는 경우 에이전트는 배포자에 트랜잭션 없음 메시지를 보고합니다. 이 옵션은 에이전트가 다른 트랜잭션 없음 메시지를 보고하기 전에 대기하는 시간을 지정합니다. 에이전트는 이전에 복제된 트랜잭션을 처리한 후 원본에서 사용할 수 있는 트랜잭션이 없다는 것을 감지할 때 항상 트랜잭션 없음 메시지를 보고합니다. 기본값은 60초입니다.

-MultiSubnetFailover [ 0 | 1 ]

적용 대상: SQL Server 2019(15.x) 이상 버전

MultiSubnetFailover 속성을 사용할지 여부를 지정합니다. 애플리케이션이 다른 서브넷의 Always On AG(가용성 그룹)에 연결하는 경우 MultiSubnetFailover를 1(true)로 설정하면 (현재) 활성 서버에 대한 빠른 검색 및 연결을 제공합니다.

AG에서 트랜잭션 게시를 구성하는 경우 로그 판독기 에이전트는 수신기에 대한 동적 연결된 서버를 만들어 메타데이터를 확인합니다. SQL Server 2022(16.x) CU 10 이상 버전에서는 동적 연결된 서버의 구성이 변경되었습니다. 자세한 내용은 KB5031778 참조하세요.

-출력 output_path_and_file_name

에이전트 출력 파일의 경로입니다. 파일 이름이 제공되지 않으면 출력이 콘솔로 전송됩니다. 지정된 파일 이름이 있으면 출력이 파일에 추가됩니다.

-OutputVerboseLevel [ 0 | 1 | 2 | 3 | 4 ]

출력이 자세해야 하는지 여부를 지정합니다.

설명
0 오류 메시지만 인쇄됩니다.
1 모든 에이전트 진행률 보고 메시지가 출력됩니다.
2(기본값) 모든 오류 메시지 및 에이전트 진행률 보고서 메시지가 인쇄됩니다.
3 복제된 각 명령의 처음 100바이트가 인쇄됩니다.
4 복제된 모든 명령이 인쇄됩니다.

값 2-4는 디버깅할 때 유용합니다.

-PacketSize packet_size

패킷 크기(바이트)입니다. 기본값은 4096(바이트)입니다.

-PollingInterval polling_interval

로그가 복제된 트랜잭션에 대해 쿼리되는 빈도(초)입니다. 기본값은 5초입니다.

-ProfileName profile_name

에이전트 매개 변수에 사용할 에이전트 프로필을 지정합니다. 이 NULL경우 ProfileName 에이전트 프로필을 사용할 수 없습니다. 지정하지 않으면 ProfileName 에이전트 유형에 대한 기본 프로필이 사용됩니다. 자세한 내용은 복제 에이전트 프로필을 참조 하세요.

-PublisherFailoverPartner server_name [ \instance_name ]

게시 데이터베이스와 함께 데이터베이스 미러링 세션에 참여하는 SQL Server의 장애 조치(failover) 파트너 인스턴스를 지정합니다. 자세한 내용은 데이터베이스 미러링 및 복제(SQL Server)를 참조하세요.

-PublisherSecurityMode [ 0 | 1 ]

게시자의 보안 모드를 지정합니다. 값 0 은 SQL Server 인증(기본값)을 나타내고 값은 1 Windows 인증 모드를 나타냅니다.

-PublisherLogin publisher_login

게시자 로그인 이름입니다.

-PublisherPassword publisher_password

게시자 암호입니다.

-QueryTimeOut query_time_out_seconds

쿼리 시간이 초과되기 전의 시간(초)입니다. 기본값은 1,800초입니다.

-ReadBatchSize number_of_transactions

처리 주기당 게시 데이터베이스의 트랜잭션 로그에서 읽은 최대 트랜잭션 수이며 기본값은 500, 최대값은 10000입니다. 에이전트는 로그에서 모든 트랜잭션을 읽을 때까지 일괄 처리로 트랜잭션을 계속 읽습니다. 이 매개 변수는 Oracle 게시자에 대해 지원되지 않습니다.

-ReadBatchThreshold number_of_commands

배포 에이전트 구독자에 발급되기 전에 트랜잭션 로그에서 읽을 복제 명령의 수입니다. 기본값은 0입니다. 이 매개 변수를 지정하지 않으면 로그 판독기 에이전트가 로그의 끝이나 지정된 -ReadBatchSize 숫자(트랜잭션 수)로 읽습니다.

-RecoverFromDataErrors

로그 판독기 에이전트가 SQL Server가 아닌 게시자에서 게시된 열 데이터에서 오류가 발생할 때 계속 실행되도록 지정합니다. 기본적으로는 이러한 오류가 발생하면 로그 판독기 에이전트가 실패합니다. 사용하는 -RecoverFromDataErrors경우 잘못된 열 데이터가 null이 아닌 값으로 NULL 복제되고 경고 메시지가 MSlogreader_history 테이블에 기록됩니다. 이 매개 변수는 Oracle 게시자에 대해서만 지원됩니다.

설명

도메인 사용자 계정(기본값)이 아닌 로컬 시스템 계정으로 실행할 SQL Server 에이전트 설치한 경우 서비스는 로컬 컴퓨터에만 액세스할 수 있습니다. SQL Server 에이전트 실행 중인 로그 판독기 에이전트가 SQL Server에 로그인할 때 Windows 인증 모드를 사용하도록 구성된 경우 로그 판독기 에이전트가 실패합니다. 기본 설정은 SQL Server 인증입니다. 보안 계정 변경에 대한 자세한 내용은 복제 보안 설정 보기 및 수정을 참조 하세요.

로그 판독기 에이전트를 시작하려면 명령 프롬프트에서 실행 logread.exe 합니다. 자세한 내용은 복제 에이전트 실행 파일 개념을 참조 하세요.