EC2 Windows 인스턴스에서 Microsoft SQL 문제를 해결하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2021년 6월 25일

Microsoft SQL Server를 실행하는 Amazon Elastic Compute Cloud (Amazon EC2) 인스턴스에서 오류가 발생합니다. 또는 SQL Server가 느려서 애플리케이션 로깅 시간 초과 오류가 발생합니다. 인스턴스에서 SQL Server 문제를 해결하려면 어떻게 해야 하나요?

간략한 설명

다음은 SQL Server에서 발생할 수 있는 일반적인 오류입니다.

  • SQL Server 인스턴스가 기본 복제본에서 보조 복제본으로 장애 조치되었습니다.
  • 이벤트 뷰어가 15분마다 이벤트 1196 “클러스터 네트워크 이름 리소스 ‘Cluster Name’이 다음과 같은 이유로 하나 이상의 연결된 DNS 이름을 등록하지 못했습니다.”를 로그합니다.
  • SQL 리스너를 생성할 수 없습니다.
  • SQL Server가 느리며 이로 인해 애플리케이션이 시간 초과 오류를 로그합니다.
  • SQL 설정에서 별도의 서버에 대한 설정을 감지한 후 잘못된 자격 증명 오류와 함께 노드 추가가 실패합니다.

해결 방법

SQL Server 인스턴스가 기본 복제본에서 보조 복제본으로 장애 조치됨

장애 조치는 흔히 기본 클러스터 그룹에서 발생합니다. 문제가 클러스터 수준인지 확인하려면 다음과 같은 단계에 따라 이벤트 뷰어에서 시스템 로그를 확인합니다.

  1. 실행 애플리케이션을 연 후 eventvwr을 입력하고 [확인]을 선택합니다.
  2. [Windows 로그], [시스템]을 선택합니다. 로그에 이벤트 1069, 1146, 1230 또는 1135가 표시되는 경우 클러스터 로그를 생성하여 클러스터 수준에서 조사를 시작합니다.
    참고: 이벤트 1135가 표시된다면 클러스터 노드 장애 조치가 발생한 것입니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 이벤트 ID 1135 관련 클러스터 문제 해결을 참조하세요.

클러스터 로그를 생성하고 검색하려면 다음을 수행합니다.

  1. Windows PowerShell에서 get-clusterlogs 명령을 실행하여 최신 클러스터 로그 집합을 생성합니다.
  2. C:\windows\cluster\reports의 기본 위치에서 클러스터 로그를 검색합니다.

클러스터 로그에 클러스터가 SQL 리소스로 인해 장애 조치된 것으로 표시되면 이벤트 뷰어 애플리케이션 로그에서 SQL 오류를 검토합니다. 자세한 내용은 Always On 가용성 그룹의 임대, 클러스터 및 상태 확인 제한 시간의 메커니즘 및 지침을 참조하세요.

이벤트 뷰어가 15분마다 이벤트 1196 “클러스터 네트워크 이름 리소스 ‘Cluster Name’이 다음과 같은 이유로 하나 이상의 연결된 DNS 이름을 등록하지 못했습니다.”를 로그함

기본적으로 CNO(Cluster Name Object)는 15분마다 DNS로 이동하여 필요한 레코드가 아직 있는지 확인합니다. 확인에 실패하면 클러스터 네트워크 이름 리소스 ‘Cluster Name’ 등록 실패 오류가 발생합니다.

이 오류는 흔히 CNO에 클러스터 네트워크 이름의 클러스터 DNS 레코드에 대한 권한이 누락되었을 때 발생합니다. 이 문제를 해결하려면 DNS 레코드에 대한 모든 권한을 CNO에 부여합니다. 기본적으로 클러스터는 일반적으로 생성 시에 이러한 권한을 부여합니다.

정적 DNS 레코드를 사용하는 경우 또는 클러스터가 DNS 레코드를 계속 업데이트하지 않도록 하려는 경우 다음을 수행합니다.

  1. ncpa.cpl, [NIC 카드 속성], [Ipv4 속성], [고급], [DNS]로 이동합니다.
  2. [이 연결의 주소를 DNS에 등록]을 선택 해제합니다.

SQL 리스너를 생성할 수 없음

SQL Server가 느리며 이로 인해 애플리케이션이 시간 초과 오류를 로그함

다음과 같이 SQL 서버에 메모리 사용량 과다, CPU 사용률 과다 또는 디스크 병목 현상이 발생하는지 확인합니다.

OS에서 메모리 사용량이 많은지 확인합니다. 작업 관리자를 연 후 [성능] 탭을 선택합니다. 메모리 사용량이 많으면 아직 SQL 메모리를 제한하지 않은 경우 SQL 메모리를 제한합니다. SQL 메모리가 이미 제한되어 있는 경우 Windows 성능 모니터(perfmon)에 액세스하여 메모리를 사용하는 애플리케이션을 확인합니다. 로컬 또는 원격으로 perfmon을 설정할 수 있습니다.

OS에서 CPU 사용률이 높은지 확인합니다. 작업 관리자를 연 후 [성능] 탭을 선택합니다. 또는 AWS CloudWatch 지표를 검토합니다. Windows 성능 모니터에 액세스하여 메모리를 사용하는 애플리케이션을 확인합니다. 높은 CPU 사용률은 일반적으로 오래된 드라이버로 인해 발생합니다. 최신 PV 드라이버 버전으로 업그레이드합니다. 또는 최신 버전으로 AWS NVMe 드라이버를 업그레이드합니다.

서버의 디스크 사용량이 많거나 볼륨 속도가 느리거나 I/O가 높은지 확인합니다. 높은 CPU 사용률과 마찬가지로 오래된 드라이버로 인해 많은 디스크 사용량이 발생할 수 있습니다. 최신 PV 드라이버 버전으로 업그레이드합니다. 또는 최신 버전으로 AWS NVMe 드라이버를 업그레이드합니다. 드라이버를 업데이트한 후에도 문제가 지속되면 perfmon을 구성하여 디스크 I/O를 사용하는 항목을 확인합니다.

SQL 설정에서 별도의 서버에 대한 설정을 감지한 후 잘못된 자격 증명 오류와 함께 노드 추가가 실패함

다음 중 하나에 해당하는지 확인합니다.

  • 두 번째 서버 세부 정보를 탐지한 후 세컨더리 노드의 SQL 설정에 SQL 에이전트 계정 이름이 비어 있습니다.
  • 레지스트리 키 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\ConfigurationState에 값이 2인 키가 하나 이상 있습니다.

위 사항 중 하나 또는 둘 모두에 해당하는 경우 다음을 수행합니다.

1.    Microsoft Powershell을 연 후 다음 명령을 실행합니다.

$ClusterName = "YourClusterName"
$FciClusterGroupName = "SQL Server (MSSQLSERVER)"
Add-ClusterResourceType -Name "SQL Server Agent" -Dll "sqagtres.dll"

참고: 앞의 명령 예에서 YourClusterName과 같은 변수 이름을 자신의 환경에 맞게 수정합니다.

2.    장애 조치 클러스터 관리자를 연 후 [역할], [SQL 역할], [리소스 추가], [추가 리소스]를 선택합니다.

3.    [새 SQL Server 에이전트], [속성], [종속성]을 선택합니다.

4.    [리소스] 필드에서 [SQL Server]를 선택합니다.

5.    [속성] 탭을 선택한 후 [InstanceName] 필드에 SQL Server 인스턴스의 이름을 입력합니다. 그런 다음, [VirtualServerName] 필드에 SQL 클러스터의 이름을 입력합니다. 새 SQL Server 에이전트가 시작됩니다.

6.    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\ConfigurationState에서 모든 키의 값을 1로 변경했는지 확인합니다.

7.    설정을 다시 실행합니다. 이제 자격 증명 오류 발생 없이 노드를 추가할 수 있습니다.