다음을 통해 공유


문제 해결 링크 - Azure SQL Managed Instance

적용 대상:Azure SQL Managed Instance

이 문서에서는 SQL Server와 Azure SQL Managed Instance 간의 링크 문제를 모니터링하고 해결하는 방법을 설명합니다.

Transact-SQL(T-SQL), Azure PowerShell 또는 Azure CLI를 사용하여 링크의 상태를 확인할 수 있습니다. 문제가 발생하는 경우 오류 코드를 사용하여 문제를 해결할 수 있습니다.

두 인스턴스 간의 네트워크 확인하고 환경이 링크에 대한 제대로 준비되었는지 확인하는 링크를 만드는 데 관련된 많은 문제를 해결할 수 있습니다.

초기 파종

SQL Server와 Azure SQL Managed Instance 간에 링크를 설정할 때 데이터 복제가 시작되기 전에 초기 시드 단계가 있습니다. 초기 시드 단계는 가장 길고 비용이 많이 드는 작업입니다. 초기 시드가 완료되면 데이터가 동기화되고 후속 데이터 변경 내용만 복제됩니다. 초기 시드가 완료되는 데 걸리는 시간은 데이터 크기, 주 데이터베이스의 워크로드 강도 및 주 복제본과 보조 복제본 네트워크 간의 연결 속도에 따라 달라집니다.

두 인스턴스 간의 링크 속도가 필요한 속도보다 느리면 시드 시간에 큰 영향을 받을 수 있습니다. 명시된 시드 속도, 총 데이터 크기 및 링크 속도를 사용하여 데이터 복제가 시작되기 전에 초기 시드 단계가 걸리는 시간을 예측할 수 있습니다. 예를 들어 단일 100GB 데이터베이스의 경우 링크가 시간당 84GB를 푸시할 수 있고 다른 링크에 시드되는 다른 데이터베이스가 없는 경우 초기 시드 단계는 약 1.2시간이 걸립니다. 링크가 시간당 10GB만 전송할 수 있으면 100GB 데이터베이스를 시드하는 데 약 10시간이 걸립니다. 여러 링크를 통해 복제할 데이터베이스가 여러 개인 경우 시드가 병렬로 실행되고, 느린 링크 속도와 결합될 때 초기 시드 단계가 상당히 오래 걸릴 수 있습니다. 특히 모든 데이터베이스에서 데이터를 병렬로 시드하는 것이 사용 가능한 링크 대역폭을 초과하는 경우 더 오래 걸릴 수 있습니다.

중요합니다

초기 시드 단계는 매우 낮은 속도 또는 사용 중인 링크로 며칠이 걸릴 수 있습니다. 이 경우 링크를 만드는 데 시간이 초과되어 중단될 수 있습니다. 링크를 생성하는 것은 6일 후에 자동으로 취소됩니다.

링크에 문제가 발생하는 경우 SSMS(SQL Server Management Studio), Transact-SQL(T-SQL), Azure PowerShell 또는 Azure CLI를 사용하여 링크의 현재 상태에 대한 정보를 가져올 수 있습니다.

T-SQL을 사용하여 링크 상태의 빠른 상태 세부 정보를 확인하고 Azure PowerShell 또는 Azure CLI를 사용하여 링크의 현재 상태에 대한 포괄적인 정보를 확인할 수 있습니다.

링크 모니터링은 SSMS(SQL Server Management Studio) 21.0(미리 보기)부터 사용할 수 있습니다.

SSMS에서 링크 상태를 확인하려면 다음 단계를 수행합니다.

  1. 링크를 호스트하는 복제본에 연결합니다.

  2. 개체 탐색기에서 Always On 고가용성을 확장한 다음 가용성 그룹을 확장합니다.

  3. 링크의 이름을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택하여 링크 속성 창을 엽니다.

    속성이 강조 표시된 SSMS 링크의 오른쪽 클릭 메뉴 스크린샷

  4. 링크 속성 창에는 복제본 정보, 링크 상태 및 엔드포인트 인증서 만료 날짜와 같은 링크에 대한 유용한 정보가 표시됩니다.

    SSMS의 링크 속성 창 스크린샷

replicaState 값은 현재 링크를 설명합니다. 상태에 오류 포함된 경우 상태에 나열된 작업 중에 오류가 발생했습니다. 예를 들어, LinkCreationError은 링크를 생성하는 동안 오류가 발생했음을 나타냅니다.

몇 가지 가능한 replicaState 값은 다음과 같습니다.

  • 생성 링크: 초기 배포
  • LinkSynchronizing: 데이터 복제가 진행 중입니다.
  • LinkFailoverInProgress: 장애 조치가 진행 중입니다.

링크 상태 속성의 전체 목록은 분산 가용성 그룹 - GET REST API 명령을 검토합니다.

링크를 사용할 때 발생할 수 있는 오류에는 링크를 초기화하려고 할 때 발생하는 오류와 링크를 만들려고 할 때 발생하는 오류의 두 가지 범주가 있습니다.

링크를 초기화할 때 다음 오류가 발생할 수 있습니다(링크 상태: LinkInitError).

  • 오류 41962: 링크가 5분 이내에 시작되지 않아 작업이 중단되었습니다. 네트워크 연결 확인하고 다시 시도합니다.
  • 오류 41973: SQL Server 엔드포인트 인증서를 Azure SQL Managed Instance로 올바르게 가져오지 않았기 때문에 링크를 설정할 수 없습니다.
  • 오류 41974: SQL Managed Instance 엔드포인트 인증서를 SQL Server로 올바르게 가져오지 않았기 때문에 링크를 설정할 수 없습니다.
  • 오류 41976: 가용성 그룹이 응답하지 않습니다. 이름 및 구성 매개 변수를 확인하고 다시 시도합니다.
  • 오류 41986: 연결이 실패했거나 보조 복제본이 응답하지 않아 링크를 설정할 수 없습니다. 이름, 구성 매개 변수 및 네트워크 연결 확인한 다음 다시 시도합니다.
  • 오류 47521: 보조 서버가 요청을 받지 못했기 때문에 링크를 설정할 수 없습니다. 주 서버에서 가용성 그룹 및 데이터베이스가 정상 상태인지 확인하고 다시 시도합니다.

링크를 만들 때 다음과 같은 오류가 발생할 수 있습니다(링크 상태: LinkCreationError

  • 오류 41977: 대상 데이터베이스가 응답하지 않습니다. 링크 매개 변수를 확인하고 다시 시도합니다.

  • 조기 로그 잘림: 초기 시드가 완료되기 전에 트랜잭션 로그가 잘리는 경우 다음 오류 중 하나가 표시될 수 있습니다.

    • 오류 1408: 데이터베이스 "%.*ls"의 원격 복사본이 데이터베이스 미러링을 사용하거나 가용성 그룹에 조인할 만큼 충분히 복구되지 않았습니다.
    • 오류 1412: 데이터베이스 "%.*ls"의 원격 복사본이 데이터베이스 로그의 로컬 복사본에 포함된 특정 시점으로 롤업되지 않았습니다.

    이 문제를 해결하려면 링크를 삭제 하고 다시 만들어야 합니다.
    이 문제를 방지하려면 초기 시드 단계 중에 복제되는 데이터베이스에 대한 SQL Server의 트랜잭션 로그 백업을 일시 중지합니다.

강제 장애 조치 후 일관성이 없는 상태

강제 장애 조치(failover)후에 두 복제본이 모두 주 역할에 있게 될 수 있는 분할 브레인 시나리오가 발생하여 링크가 일관되지 않은 상태로 남아 있을 수 있습니다. 재해 발생 시 보조 복제본으로 장애 조치(failover)한 다음, 주 복제본이 온라인으로 복귀할 때 이러한 상황이 발생할 수 있습니다.

먼저 스플릿 브레인 시나리오에 있는지 확인합니다. SSMS(SQL Server Management Studio) 또는 Transact-SQL(T-SQL)를 사용하여 수행할 수 있습니다.

SSMS에서 SQL Server와 SQL 관리 인스턴스 모두에 연결한 다음, Object 탐색기에서 Always On 가용성 그룹가용성 그룹 노드 아래에 있는 가용성 복제본 을 확장합니다. 두 개의 서로 다른 복제본이 (기본)로 나열되는 경우, '스플릿 브레인' 시나리오에 해당합니다.

에서 SQL Server 및 SQL Managed Instance에 다음 T-SQL 스크립트를 실행하여 복제본의 역할을 확인할 수 있습니다.

-- Execute on SQL Server and SQL Managed Instance 
USE master
DECLARE @link_name varchar(max) = '<DAGName>'
SELECT
   ag.name [Link name], 
   rs.role_desc [Link role] 
FROM
   sys.availability_groups ag 
   JOIN sys.dm_hadr_availability_replica_states rs 
   ON ag.group_id = rs.group_id 
WHERE 
   rs.is_local = 1 AND ag.is_distributed = 1 AND ag.name = @link_name 
GO

두 인스턴스가 링크 역할 열에 기본 나열하는 경우 분할 브레인 시나리오에 있습니다.

분할 브레인 상태를 해결하려면 먼저 원래 주 복제본이었던 복제본에 대한 백업을 수행합니다. 원래 주 서버가 SQL Server인 경우 테일 로그 백업. 원래 주 복제본이 SQL Managed Instance인 경우 복사 전용의 전체 백업을 수행하십시오. 백업이 완료되면, 원래 주 복제본으로 사용되었지만 이제 새 보조 복제본이 될 해당 복제본을 보조 역할로 분산 가용성 그룹에 설정합니다.

예를 들어 실제 재해가 발생할 경우, SQL Server 워크로드를 Azure SQL Managed Instance로 강제 장애 조치하고 SQL Managed Instance에서 워크로드를 계속 실행하려는 경우, SQL Server에서 최신 로그 백업을 수행한 후, SQL Server에 대해 분산 가용성 그룹을 다음과 같이 보조 역할로 설정합니다.

--Execute on SQL Server 
USE master
ALTER AVAILABILITY GROUP [<DAGName>] 
SET (ROLE = SECONDARY) 
GO 

다음으로, 다음 예제와 같은 링크를 사용하여 SQL Managed Instance에서 SQL Server로 계획된 수동 장애 조치(failover)를 실행합니다.

--Execute on SQL Managed Instance 
USE master
ALTER AVAILABILITY GROUP [<DAGName>] FAILOVER 
GO 

만료된 인증서

링크에 사용되는 인증서가 만료 될 수 있습니다. 인증서가 만료되면 링크가 실패합니다. 이 문제를 해결하려면 인증서 로 교체하십시오.

네트워크 연결 테스트

링크가 작동하려면 SQL Server와 SQL Managed Instance 간의 양방향 네트워크 연결이 필요합니다. SQL Server 쪽에서 포트를 열고 SQL Managed Instance 쪽에서 NSG 규칙을 구성한 후 SSMS(SQL Server Management Studio) 또는 Transact-SQL을 사용하여 연결을 테스트합니다.

SQL Server와 SQL Managed Instance 모두에서 임시 SQL 에이전트 작업을 만들어 네트워크를 테스트하여 두 인스턴스 간의 연결을 확인합니다. SSMS에서 네트워크 검사기 사용하면 작업이 자동으로 만들어지고 테스트가 완료된 후 삭제됩니다. T-SQL을 사용하여 네트워크를 테스트하는 경우 SQL 에이전트 작업을 수동으로 삭제해야 합니다.

메모

SQL Server on Linux의 SQL Server 에이전트에서 PowerShell 스크립트를 실행하는 것은 현재 지원되지 않으므로 현재는 SQL Server on Linux의 SQL Server 에이전트 작업에서 Test-NetConnection 실행할 수 없습니다.

SQL 에이전트를 사용하여 네트워크 연결을 테스트하려면 다음 요구 사항이 필요합니다.

  • 테스트를 수행하는 사용자는 SQL Server 및 SQL Managed Instance 모두에 대해 작업을(를) 만들 수 있는 권한이 있어야 합니다. 이 권한은 sysadmin 자격이 있거나 SQLAgentOperator 역할에 속할 때 부여됩니다.
  • SQL Server 에이전트 서비스는 SQL Server에서 실행하는 있어야 합니다. 에이전트는 SQL Managed Instance에서 기본적으로 설정되므로 추가 작업이 필요하지 않습니다.

SSMS에서 SQL Server와 SQL Managed Instance 간의 네트워크 연결을 테스트하려면 다음 단계를 수행합니다.

  1. SSMS의 주 복제본이 될 인스턴스에 연결합니다.

  2. 개체 탐색기데이터베이스를 확장하고 보조 데이터베이스와 연결하려는 데이터베이스를 마우스 오른쪽 단추로 클릭합니다. 작업>Azure SQL Managed Instance 링크>연결 테스트 선택하여 네트워크 검사기 마법사를 엽니다.

    데이터베이스 링크 오른쪽 클릭 메뉴에서 테스트 연결이 선택된 SSMS(SSMS)의 개체 탐색기 스크린샷

  3. 네트워크 검사기 마법사의 소개 페이지에서 다음을 선택합니다.

  4. 필수 구성 요소 페이지에서 모든 요구 사항이 충족되면 다음선택합니다. 미충족된 필수 조건을 해결한 후, 유효성 검사를 다시 실행할선택하세요.

  5. 로그인 페이지에서 로그인 선택하여 보조 복제본이 될 다른 인스턴스에 연결합니다. 다음선택합니다.

  6. 네트워크 옵션 지정 페이지에서 세부 정보를 확인하고 필요한 경우 IP 주소를 제공합니다. 다음선택합니다.

  7. 요약 페이지에서 마법사가 수행하는 작업을 검토한 다음 마침 선택하여 두 복제본 간의 연결을 테스트합니다.

  8. 결과 페이지를 검토하여 두 복제본 간에 연결이 존재하는지 확인하고 닫기를 선택하여 완료합니다.

주의

원본 환경과 대상 환경 간의 네트워크 연결의 유효성을 검사한 경우에만 다음 단계를 진행합니다. 그렇지 않으면 계속하기 전에 네트워크 연결 문제를 해결합니다.

링크 기능에 대한 자세한 내용은 다음 리소스를 검토하세요.