데이터베이스 실험 도우미 추적 재생

DEA(데이터베이스 실험 도우미)에서는 업그레이드된 테스트 환경에 대해 캡처된 추적 파일을 재생할 수 있습니다. 예를 들어 SQL Server 2008 R2에서 실행되는 프로덕션 워크로드를 고려합니다. 워크로드에 대한 추적 파일은 프로덕션에서 실행되는 동일한 버전의 SQL Server가 있는 환경에서 한 번, SQL Server 2016과 같이 업그레이드 대상 SQL Server 버전이 있는 환경에서 두 번 재생해야 합니다.

참고 항목

추적을 재생하려면 가상 머신 또는 물리적 컴퓨터를 수동으로 설정하여 Distributed Replay 추적을 실행해야 합니다. 자세한 내용은 데이터베이스 실험 도우미 대한 Distributed Replay 구성을 참조하세요.

대상 1에 대한 추적 재생 구성

먼저 기존 프로덕션 환경을 나타내는 대상 1에 대해 추적 재생을 수행해야 합니다.

  1. DEA의 왼쪽 탐색 모음에서 화살표 아이콘을 선택한 다음 모든 재생 페이지에서 새 재생 선택합니다.

    Create a replay in DEA

    참고 항목

    Distributed Replay 컨트롤러 컴퓨터에는 원격으로 연결하는 데 사용하는 사용자 계정에 대한 권한이 필요합니다.

  2. 새 재생 페이지의 재생 세부 정보에서 다음 정보를 입력하거나 선택합니다.

    • 재생 이름: 추적 재생의 이름을 입력합니다.

    • 원본 추적 형식: 원본 추적 파일의 형식(추적 또는 XEvents)을 지정합니다.

    • 원본 파일의 전체 경로: 원본 추적 파일의 전체 경로를 지정합니다. DReplay를 사용하는 경우 DReplay 컨트롤러 역할을 하는 컴퓨터에 파일이 있어야 하며 사용자 계정에는 파일 및 폴더에 대한 액세스 권한이 필요합니다.

    • 재생 도구: 재생 도구(DReplay 또는 InBuilt)를 지정합니다.

    • 컨트롤러 컴퓨터 이름: Distributed Replay Controller 역할을 하는 컴퓨터의 이름을 지정합니다.

    • 추적 위치 재생: 추적 재생과 연결된 추적 파일/XEvents를 저장할 경로를 지정합니다.

      참고 항목

      Azure SQL Database 또는 Azure SQL Managed Instance의 경우 Azure Blob Storage 계정의 SAS URI를 제공해야 합니다.

  3. 예를 선택하여 데이터베이스를 복원했는지 확인합니다. 데이터베이스 검사 상자를 수동으로 복원했습니다.

  4. SQL Server 연결 세부 정보에서 다음 정보를 입력하거나 선택합니다.

    • 서버 유형: SQL Server의 형식을 지정합니다(SqlServer, AzureSqlDb, AzureSqlManagedInstance).
    • 서버 이름: SQL Server의 서버 이름 또는 IP 주소를 지정합니다.
    • 인증 유형: 인증 유형에 대해 Windows를 선택합니다.
    • 데이터베이스 이름: 서버 쪽 추적을 시작할 데이터베이스의 이름을 입력합니다. 데이터베이스를 지정하지 않으면 추적이 서버의 모든 데이터베이스에서 캡처됩니다.
  5. 시나리오에 맞게 연결 암호화 및 트러스트 서버 인증서 검사 상자를 선택하거나 선택 취소합니다.

    New Replay page

대상 1에서 추적 재생 시작

  • 필요한 정보를 입력하거나 선택한 후 시작을 선택하여 추적 재생을 시작합니다.

    입력한 정보가 유효한 경우 Distributed Replay 프로세스가 시작됩니다. 그렇지 않으면 잘못된 정보가 있는 텍스트 상자가 빨간색으로 강조 표시됩니다. 입력한 값이 올바른지 확인한 다음 시작을 선택합니다.

    Replay progress against target 1

    필요에 따라 프로세스를 모니터링할 수 있습니다. 재생이 완료되면 DEA는 지정한 위치에 있는 파일에 결과를 저장합니다.

    Replay against target 1 complete

대상 2에 대해 추적 재생 수행

대상 1에 대한 추적 재생을 완료한 후에는 의도한 업그레이드 환경을 나타내는 두 번째 대상에 대해 동일한 작업을 수행해야 합니다.

  1. 이번에는 대상 2 환경과 연결된 세부 정보를 사용하여 추적 재생을 구성합니다.

  2. 대상 2에서 추적 재생을 시작합니다.

    필요에 따라 프로세스를 모니터링할 수 있습니다. 재생이 완료되면 DEA는 지정한 위치에 있는 파일에 결과를 저장합니다.

추적 재생에 대한 질문과 대답

Q: 대상 서버에서 재생 캡처를 시작해야 하는 보안 권한은 무엇인가요?

  • DEA 애플리케이션에서 추적 작업을 실행하는 Windows 사용자에게는 SQL Server를 실행하는 대상 컴퓨터에 대한 sysadmin 권한이 있어야 합니다. 추적을 시작하려면 이러한 사용자 권한이 필요합니다.
  • SQL Server를 실행하는 대상 컴퓨터가 실행 중인 서비스 계정에는 지정된 추적 파일 경로에 대한 쓰기 권한이 있어야 합니다.
  • Distributed Replay Client 서비스가 실행되는 서비스 계정에는 SQL Server를 실행하는 대상 컴퓨터에 연결하고 쿼리를 실행할 수 있는 사용자 권한이 있어야 합니다.

Q: 동일한 세션에서 둘 이상의 재생을 시작할 수 있나요?

예, 여러 재생을 시작하고 동일한 세션에서 완료되도록 추적할 수 있습니다.

Q: 둘 이상의 재생을 병렬로 시작할 수 있나요?

예, 컨트롤러와 클라이언트에서 동일한 컴퓨터 집합이 선택되어 있지는 않습니다. 컨트롤러와 클라이언트가 사용 중입니다. 컨트롤러와 클라이언트 아래에 별도의 컴퓨터 집합을 설정하여 병렬 재생을 시작합니다.

Q: 재생을 완료하는 데 일반적으로 걸리는 기간은 얼마나 되나요?

재생은 일반적으로 원본 추적과 동일한 시간과 원본 추적을 전처리하는 데 걸리는 시간을 더합니다. 그러나 컨트롤러에 등록된 클라이언트 컴퓨터가 재생에서 생성된 부하를 관리하는 데 충분하지 않은 경우 재생을 완료하는 데 시간이 더 오래 걸릴 수 있습니다. 컨트롤러에 최대 16개 클라이언트 컴퓨터를 등록할 수 있습니다.

Q: 대상 추적 파일의 규모는 얼마인가요?

대상 추적 파일은 원본 추적 크기의 5~15배 사이일 수 있습니다. 파일 크기는 실행되는 쿼리 수를 기반으로 합니다. 예를 들어 쿼리 계획 Blob은 클 수 있습니다. 이러한 쿼리에 대한 통계가 자주 변경되면 더 많은 이벤트가 캡처됩니다.

Q: 데이터베이스를 복원해야 하는 이유는 무엇인가요?

SQL Server는 상태 저장 관계형 데이터베이스 관리 시스템입니다. A/B 테스트를 제대로 실행하려면 데이터베이스의 상태를 항상 유지해야 합니다. 그렇지 않으면 재생 중에 프로덕션에 표시되지 않는 오류가 쿼리에 표시될 수 있습니다. 이러한 오류를 방지하려면 원본 캡처 바로 전에 백업을 수행하는 것이 좋습니다. 마찬가지로 재생 중에 오류를 방지하려면 SQL Server를 실행하는 대상 컴퓨터에서 백업을 복원해야 합니다.

Q: 재생 페이지에서 "통과 %"는 무엇을 의미하나요?

통과 %는 전달된 쿼리의 백분율만을 의미합니다. 오류 수가 예상되는지 여부를 진단할 수 있습니다. 오류가 예상되거나 데이터베이스의 무결성이 손실되어 오류가 발생할 수 있습니다. 전달 %이 예상과 다른 경우 추적을 중지하고 SQL Profiler의 추적 파일을 확인하여 성공하지 못한 쿼리를 확인할 수 있습니다.

Q: 재생 중에 수집된 추적 이벤트를 어떻게 볼 수 있나요?

대상 추적 파일을 열고 SQL Profiler에서 확인합니다. 또는 재생 캡처를 수정하려는 경우 모든 SQL Server 스크립트는 C:\Program Files (x86)\Microsoft Corporation\데이터베이스 실험 도우미\Scripts\StartReplayCapture.sql에서 사용할 수 있습니다.

Q: DEA는 재생 중에 어떤 추적 이벤트를 수집하나요?

DEA는 성능 관련 정보를 포함하는 추적 이벤트를 캡처합니다. 캡처 구성은 StartReplayCaptureTrace.sql 스크립트에 있습니다. 이러한 이벤트는 sp_trace_setevent(Transact-SQL) 참조 설명서나열된 일반적인 SQL Server 추적 이벤트입니다.

추적 재생 문제 해결

Q: SQL Server를 실행하는 컴퓨터에 연결할 수 없는 이유는 무엇인가요?

  • SQL Server를 실행하는 컴퓨터의 이름이 유효한지 확인합니다. 확인하려면 SSMS(SQL Server Management Studio)를 사용하여 서버에 연결합니다.
  • 방화벽 구성이 SQL Server를 실행하는 컴퓨터에 대한 연결을 차단하지 않는지 확인합니다.
  • 사용자에게 필요한 사용자 권한이 있음을 확인합니다.
  • Distributed Replay 클라이언트의 서비스 계정이 SQL Server를 실행하는 컴퓨터에 액세스할 수 있도록 합니다.

%temp%\DEA의 로그에서 자세한 내용을 확인할 수 있습니다. 문제가 지속되면 제품 팀에 문의하세요.

Q: Distributed Replay 컨트롤러에 연결할 수 없는 이유는 무엇인가요?

  • Distributed Replay Controller 서비스가 컨트롤러 컴퓨터에서 실행 중인지 확인합니다. 확인하려면 Distributed Replay Management Tools(명령 dreplay.exe status -f 1실행)를 사용합니다.
  • 재생이 원격으로 시작되는 경우:
    • DEA를 실행하는 컴퓨터가 컨트롤러를 성공적으로 ping할 수 있음을 확인합니다. 방화벽 설정이 재생 환경 구성 페이지의 지침에 따라 연결을 허용하는지 확인합니다. 자세한 내용은 SQL Server Distributed Replay 문서를 참조하세요.
    • Distributed Replay 컨트롤러의 사용자에 대해 DCOM 원격 시작 및 원격 정품 인증이 허용되는지 확인합니다.
    • Distributed Replay 컨트롤러의 사용자에 대해 DCOM 원격 액세스 사용자 권한이 허용되는지 확인합니다.

Q: 추적 파일 경로가 컴퓨터에 있습니다. Distributed Replay 컨트롤러에서 찾을 수 없는 이유는 무엇인가요?

Distributed Replay는 로컬 디스크 리소스에만 액세스할 수 있습니다. 재생을 시작하기 전에 원본 추적 파일을 Distributed Replay 컨트롤러 컴퓨터에 복사해야 합니다. 또한 DEA 새 재생 페이지에서 경로를 제공해야 합니다.

UNC 경로는 Distributed Replay와 호환되지 않습니다. Distributed Replay 경로는 확장을 포함하여 첫 번째 원본 추적 파일에 대한 로컬 절대 경로여야 합니다.

Q: 새 재생 페이지에서 파일을 찾을 수 없는 이유는 무엇인가요?

원격 컴퓨터에서 폴더를 찾아볼 수 없으므로 파일 검색은 유용하지 않습니다. 절대 경로를 복사하여 붙여넣는 것이 더 효율적입니다.

Q: 추적으로 재생을 시작했지만 Distributed Replay는 이벤트를 재생하지 않았습니다. 그 이유는

추적 파일에 재생 가능한 이벤트가 없거나 이벤트를 재생하는 방법에 대한 정보가 없기 때문에 이 문제가 발생할 수 있습니다. 제공된 추적 파일 경로가 원본 추적 파일을 가리키는지 확인합니다. 원본 추적 파일은 StartCaptureTrace.sql 스크립트에 제공된 구성을 사용하여 만들어집니다.

Q: SQL Server 2017 Distributed Replay 컨트롤러를 사용하여 추적 파일을 전처리하려고 할 때 "예기치 않은 오류가 발생했습니다!"가 표시됩니다. 그 이유는

이 문제는 RTM 버전의 SQL Server 2017에서 알려져 있습니다. 자세한 내용은 DReplay 기능을 사용하여 SQL Server 2017에서 캡처된 추적을 재생할 때 예기치 않은 오류를 참조하세요.

이 문제는 SQL Server 2017의 최신 누적 업데이트 1에서 해결되었습니다. SQL Server 2017용 누적 업데이트 1의 최신 버전을 다운로드합니다.

참고 항목

  • 제안된 변경 내용에 대한 인사이트를 얻는 데 도움이 되는 분석 보고서를 만들려면 보고서 만들기를 참조하세요.