데이터베이스 미러링 구성 문제 해결(SQL Server)

적용 대상:SQL Server

이 항목의 내용에서는 데이터베이스 미러링 세션을 설정할 때 발생하는 문제를 해결하는 데 도움이 되는 정보를 제공합니다.

참고

데이터베이스 미러링을 위한 모든 필수 구성 요소를 충족하는지 확인합니다.

문제 요약
오류 메시지 1418 이 SQL Server 메시지는 서버 네트워크 주소가 없거나 도달할 수 없음을 나타내며 네트워크 주소 이름을 확인한 후 명령을 다시 실행하도록 제안합니다.
계정 SQL Server 가 실행되고 있는 계정을 올바르게 구성하기 위한 요구 사항에 대해 설명합니다.
엔드포인트 각 서버 인스턴스의 데이터베이스 미러링 엔드포인트를 올바르게 구성하기 위한 요구 사항을 설명합니다.
SystemAddress 데이터베이스 미러링 구성에서 서버 인스턴스의 시스템 이름을 지정하는 대체 방법을 요약합니다.
네트워크 액세스 각 서버 인스턴스에서 TCP를 통해 다른 서버 인스턴스의 포트에 액세스할 수 있어야 한다는 요구 사항에 대해 설명합니다.
미러 데이터베이스 준비 미러링을 시작할 수 있도록 미러 데이터베이스를 준비하기 위한 요구 사항을 요약합니다.
파일 생성 작업 실패 실패한 파일 만들기 작업에 대응하는 방법을 설명합니다.
Transact-SQL을 사용하여 미러링 시작 ALTER DATABASE database_name SET PARTNER ='partner_server' 문의 필수 순서에 대해 설명합니다.
데이터베이스 간 트랜잭션 자동 장애 조치(Failover)를 사용할 경우 미결 트랜잭션이 자동으로 잘못 해결될 수 있습니다. 이러한 이유로 데이터베이스 미러링은 데이터베이스 간 트랜잭션을 지원하지 않습니다.

계정

SQL Server 를 실행하고 있는 계정이 올바르게 구성되어 있어야 합니다.

  1. 계정에 올바른 권한이 있어야 합니다.

    1. 계정이 동일한 도메인 계정에서 실행되는 경우 잘못된 구성 가능성이 줄어듭니다.

    2. 계정이 동일 도메인에서 실행행되거나 도메인 계정이 아닌 경우 한 계정의 로그인은 다른 컴퓨터의 master에서 만들어져야 하며, 해당 로그인에는 해당 엔드포인트에 대한 CONNECT 권한이 부여되어 있어야 합니다. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리(SQL Server)를 참조하세요. 여기에는 네트워크 서비스 계정이 포함됩니다.

  2. SQL Server가 로컬 시스템 계정을 사용하는 서비스로 실행 중인 경우 인증에 인증서를 사용해야 합니다. 자세한 내용은 데이터베이스 미러링 엔드포인트에 인증서 사용(Transact-SQL)을 참조하세요.

엔드포인트

엔드포인트를 올바르게 구성해야 합니다.

  1. 각 서버 인스턴스(주 서버, 미러 서버 및 미러링 모니터 서버)에는 데이터베이스 미러링 엔드포인트가 있어야 합니다. 자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL) 및 인증 형식에 따라 Windows 인증에 대한 데이터베이스 미러링 엔드포인트 만들기(Transact-SQL) 또는 데이터베이스 미러링 엔드포인트에 대한 인증서 사용(Transact-SQL)을 참조하세요.

  2. 포트 번호가 정확한지 확인합니다.

    서버 인스턴스의 데이터베이스 미러링 엔드포인트와 현재 연결된 포트를 식별하려면 sys.database_mirroring_endpointssys.tcp_endpoints 카탈로그 뷰를 사용합니다.

  3. 설명하기 어려운 데이터베이스 미러링 설치 문제의 경우 각 서버 인스턴스를 조사하여 올바른 포트에서 수신하고 있는지 확인하는 것이 좋습니다.

  4. 엔드포인트가 시작되었는지 확인합니다(STATE=STARTED). 각 서버 인스턴스에서 다음 Transact-SQL 문을 사용합니다.

    SELECT state_desc FROM sys.database_mirroring_endpoints  
    

    state_desc 열에 대한 자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL)를 참조하세요.

    엔드포인트를 시작하려면 다음 Transact-SQL 문을 사용합니다.

    ALTER ENDPOINT Endpoint_Mirroring   
    STATE = STARTED   
    AS TCP (LISTENER_PORT = <port_number>)  
    FOR database_mirroring (ROLE = ALL);  
    GO  
    

    자세한 내용은 ALTER ENDPOINT(Transact-SQL)를 참조하세요.

  5. ROLE이 정확한지 확인합니다. 각 서버 인스턴스에서 다음 Transact-SQL 문을 사용합니다.

    SELECT role FROM sys.database_mirroring_endpoints;  
    GO  
    

    자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL)를 참조하세요.

  6. 다른 서버 인스턴스의 서비스 계정에 대한 로그인에는 CONNECT 권한이 필요합니다. 다른 서버에서 로그인할 경우 CONNECT 권한이 있는지 확인합니다. 엔드포인트에 대한 CONNECT 권한이 있는 사용자를 파악하려면 각 서버 인스턴스에서 다음 Transact-SQL 문을 사용합니다.

    SELECT 'Metadata Check';  
    SELECT EP.name, SP.STATE,   
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id))   
          AS GRANTOR,   
       SP.TYPE AS PERMISSION,  
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id))   
          AS GRANTEE   
       FROM sys.server_permissions SP , sys.endpoints EP  
       WHERE SP.major_id = EP.endpoint_id  
       ORDER BY Permission,grantor, grantee;   
    GO  
    
    

시스템 주소

데이터베이스 미러링링 구성에서 서버 인스턴스의 시스템 이름에 대해 시스템을 명확하게 식별하는 모든 이름을 사용할 수 있습니다. 서버 주소는 시스템 이름(시스템이 같은 도메인에 있는 경우), 정규화된 도메인 이름 또는 IP 주소(가급적 고정 IP 주소)일 수 있습니다. 정규화된 도메인 이름을 사용하는 것이 좋습니다. 자세한 내용은 서버 네트워크 주소 지정(데이터베이스 미러링)을 참조하세요.

네트워크 액세스

각 서버 인스턴스에서 TCP를 통해 다른 서버 인스턴스의 포트에 액세스할 수 있어야 합니다. 이는 서버 인스턴스가 서로를 신뢰하지 않는 다른 도메인(신뢰할 수 없는 도메인)에 있는 경우 특히 중요합니다. 이렇게 하면 서버 인스턴스 간의 통신이 많이 제한됩니다.

미러 데이터베이스 준비

처음으로 미러링을 시작하는 것이든 미러링을 제거한 후 다시 시작하는 것이든 관계없이 미러 데이터베이스가 미러링을 위한 준비를 완료했는지 확인합니다.

미러 서버에 미러 데이터베이스를 만들 때는 WITH NORECOVERY로 동일한 데이터베이스 이름을 지정하여 주 데이터베이스의 백업을 복원하도록 해야 합니다. 백업 후에 생성된 모든 로그 백업 또한 WITH NORECOVERY를 사용하여 적용해야 합니다.

또한 가능한 경우 드라이브 문자를 포함한 미러 데이터베이스의 파일 경로가 주 데이터베이스의 경로와 일치하는 것이 좋습니다. 예를 들어 주 데이터베이스가 드라이브 'F:'에 있지만 미러 시스템에 F: 드라이브가 존재하지 않는 상황에 파일 경로가 달라야 하는 경우 RESTORE 문에 MOVE 옵션을 포함해야 합니다.

중요

미러 데이터베이스를 만들 때 데이터베이스 파일을 이동한 경우 나중에 데이터베이스에 파일을 추가하려면 미러링을 일시 중지해야 할 수도 있습니다.

데이터베이스 미러링이 중지된 경우 주 데이터베이스에서 수행된 모든 후속 로그 백업을 미러 데이터베이스에 적용해야만 미러링을 다시 시작할 수 있습니다.

자세한 내용은 미러 데이터베이스의 미러링 준비(SQL Server)를 참조하세요.

파일 생성 작업 실패

미러링 세션에 영향을 주지 않고 파일을 추가하려면 파일 경로가 두 서버에 모두 있어야 합니다. 따라서 미러 데이터베이스를 만들 때 데이터베이스 파일을 이동하면 나중에 미러 데이터베이스에 파일을 추가할 수 없고 미러링이 일시 중지될 수 있습니다.

이 문제를 해결하려면:

  1. 데이터베이스 소유자는 미러링 세션을 제거하고 추가된 파일이 포함된 파일 그룹의 전체 백업을 복원해야 합니다.

  2. 소유자는 주 서버에서 파일 추가 작업을 포함하는 로그를 백업하고 WITH NORECOVERY 및 WITH MOVE 옵션을 사용하여 미러 데이터베이스에서 로그 백업을 수동으로 복원합니다. 이렇게 하면 미러 서버에 지정된 파일 경로가 만들어지고 새 파일이 해당 위치로 복원됩니다.

  3. 새 미러링 세션에 대비해서 데이터베이스를 준비하려면 소유자가 주 서버에서 WITH NO RECOVERY 및 기타 처리 중인 로그 백업도 복원해야 합니다.

자세한 내용은 데이터베이스 미러링 제거(SQL Server), 미러 데이터베이스의 미러링 준비(SQL Server), Windows 인증을 사용하여 데이터베이스 미러링 세션 구성(Transact-SQL), 데이터베이스 미러링 엔드포인트에 대한 인증서 사용(Transact-SQL) 또는 Windows 인증을 사용하여 데이터베이스 미러링 세션 구성(SQL Server Management Studio)을 참조하세요.

Transact-SQL을 사용하여 미러링 시작

ALTER DATABASE database_name SET PARTNER ='partner_server' 문이 실행되는 순서는 매우 중요합니다.

  1. 미러 서버에서 첫 번째 문을 실행해야 합니다. 이 문을 실행할 때는 미러 서버에서 다른 서버 인스턴스에 연결하지 않고 대신 미러 서버는 주 서버에서 미러 서버에 연결할 때까지 기다리도록 데이터베이스에 지시합니다.

  2. 주 서버에서 두 번째 ALTER DATABASE 문을 실행해야 합니다. 이 문을 실행하면 주 서버가 미러 서버에 연결을 시도합니다. 해당 연결이 생성된 후 미러는 다른 연결의 주 서버에 연결을 시도합니다.

자세한 내용은 ALTER DATABASE(Transact-SQL)를 참조하세요.

참고

SQL Server Management Studio를 사용하여 미러링을 시작하는 방법은 Windows 인증을 사용하여 데이터베이스 미러링 세션 구성(SQL Server Management Studio)을 참조하세요.

데이터베이스 간 트랜잭션

데이터베이스가 자동 장애 조치(failover)를 사용하여 보안 우선 모드로 미러링되는 경우 자동 장애 조치(failover)로 인해 미결 트랜잭션의 자동 및 잘못된 해결이 발생할 수 있습니다. 데이터베이스 간 트랜잭션을 커밋하는 동안 두 데이터베이스 중 하나에서 자동 장애 조치가 수행되면 데이터베이스 간에 논리적 불일치가 발생할 수 있습니다.

자동 장애 조치(failover)의 영향을 받을 수 있는 데이터베이스 간 트랜잭션 유형은 다음과 같습니다.

  • SQL Server의 동일한 인스턴스에서 여러 데이터베이스를 업데이트하는 트랜잭션입니다.

  • MS DTC(Microsoft Distributed Transaction Coordinator)를 사용하는 트랜잭션

자세한 내용은 Always On 가용성 그룹 및 데이터베이스 미러링에 대한 데이터베이스 간 트랜잭션 및 분산 트랜잭션(SQL Server)을 참조하세요.

참고 항목

데이터베이스 미러링 설정(SQL Server)
데이터베이스 미러링 및 Always On 가용성 그룹에 대한 전송 보안(SQL Server)