데이터베이스 미러링 구성 문제 해결(SQL Server)
적용 대상: SQL Server
이 항목의 내용에서는 데이터베이스 미러링 세션을 설정할 때 발생하는 문제를 해결하는 데 도움이 되는 정보를 제공합니다.
참고 항목
데이터베이스 미러링을 위한 모든 필수 구성 요소를 충족하는지 확인합니다.
문제 | 요약 |
---|---|
오류 메시지 1418 | 이 SQL Server 메시지는 서버 네트워크 주소가 없거나 도달할 수 없음을 나타내며 네트워크 주소 이름을 확인한 후 명령을 다시 실행하도록 제안합니다. |
계정 | SQL Server 가 실행되고 있는 계정을 올바르게 구성하기 위한 요구 사항에 대해 설명합니다. |
엔드포인트 | 각 서버 인스턴스의 데이터베이스 미러링 엔드포인트를 올바르게 구성하기 위한 요구 사항을 설명합니다. |
SystemAddress | 데이터베이스 미러링 구성에서 서버 인스턴스의 시스템 이름을 지정하는 대체 방법을 요약합니다. |
네트워크 액세스 | 각 서버 인스턴스에서 TCP를 통해 다른 서버 인스턴스의 포트에 액세스할 수 있어야 한다는 요구 사항에 대해 설명합니다. |
미러 데이터베이스 준비 | 미러링을 시작할 수 있도록 미러 데이터베이스를 준비하기 위한 요구 사항을 요약합니다. |
파일 생성 작업 실패 | 실패한 파일 만들기 작업에 대응하는 방법을 설명합니다. |
Transact-SQL을 사용하여 미러링 시작 | ALTER DATABASE database_name SET PARTNER ='partner_server' 문의 필수 순서에 대해 설명합니다. |
데이터베이스 간 트랜잭션 | 자동 장애 조치(Failover)를 사용할 경우 미결 트랜잭션이 자동으로 잘못 해결될 수 있습니다. 이러한 이유로 데이터베이스 미러링은 데이터베이스 간 트랜잭션을 지원하지 않습니다. |
계정
SQL Server 를 실행하고 있는 계정이 올바르게 구성되어 있어야 합니다.
계정에 올바른 권한이 있어야 합니다.
계정이 동일한 도메인 계정에서 실행되는 경우 잘못된 구성 가능성이 줄어듭니다.
계정이 동일 도메인에서 실행행되거나 도메인 계정이 아닌 경우 한 계정의 로그인은 다른 컴퓨터의 master에서 만들어져야 하며, 해당 로그인에는 해당 엔드포인트에 대한 CONNECT 권한이 부여되어 있어야 합니다. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리(SQL Server)를 참조하세요. 여기에는 네트워크 서비스 계정이 포함됩니다.
SQL Server가 로컬 시스템 계정을 사용하는 서비스로 실행 중인 경우 인증에 인증서를 사용해야 합니다. 자세한 내용은 데이터베이스 미러링 엔드포인트에 인증서 사용(Transact-SQL)을 참조하세요.
엔드포인트
엔드포인트를 올바르게 구성해야 합니다.
각 서버 인스턴스(주 서버, 미러 서버 및 미러링 모니터 서버)에는 데이터베이스 미러링 엔드포인트가 있어야 합니다. 자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL) 및 인증 형식에 따라 Windows 인증에 대한 데이터베이스 미러링 엔드포인트 만들기(Transact-SQL) 또는 데이터베이스 미러링 엔드포인트에 대한 인증서 사용(Transact-SQL)을 참조하세요.
포트 번호가 정확한지 확인합니다.
서버 인스턴스의 데이터베이스 미러링 엔드포인트와 현재 연결된 포트를 식별하려면 sys.database_mirroring_endpoints 및 sys.tcp_endpoints 카탈로그 뷰를 사용합니다.
설명하기 어려운 데이터베이스 미러링 설치 문제의 경우 각 서버 인스턴스를 조사하여 올바른 포트에서 수신하고 있는지 확인하는 것이 좋습니다.
엔드포인트가 시작되었는지 확인합니다(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)를 참조하세요.
ROLE이 정확한지 확인합니다. 각 서버 인스턴스에서 다음 Transact-SQL 문을 사용합니다.
SELECT role FROM sys.database_mirroring_endpoints; GO
자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL)를 참조하세요.
다른 서버 인스턴스의 서비스 계정에 대한 로그인에는 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 옵션을 포함해야 합니다.
Important
미러 데이터베이스를 만들 때 데이터베이스 파일을 이동한 경우 나중에 데이터베이스에 파일을 추가하려면 미러링을 일시 중지해야 할 수도 있습니다.
데이터베이스 미러링이 중지된 경우 주 데이터베이스에서 수행된 모든 후속 로그 백업을 미러 데이터베이스에 적용해야만 미러링을 다시 시작할 수 있습니다.
자세한 내용은 미러 데이터베이스의 미러링 준비(SQL Server)를 참조하세요.
파일 생성 작업 실패
미러링 세션에 영향을 주지 않고 파일을 추가하려면 파일 경로가 두 서버에 모두 있어야 합니다. 따라서 미러 데이터베이스를 만들 때 데이터베이스 파일을 이동하면 나중에 미러 데이터베이스에 파일을 추가할 수 없고 미러링이 일시 중지될 수 있습니다.
이 문제를 해결하려면:
데이터베이스 소유자는 미러링 세션을 제거하고 추가된 파일이 포함된 파일 그룹의 전체 백업을 복원해야 합니다.
소유자는 주 서버에서 파일 추가 작업을 포함하는 로그를 백업하고 WITH NORECOVERY 및 WITH MOVE 옵션을 사용하여 미러 데이터베이스에서 로그 백업을 수동으로 복원합니다. 이렇게 하면 미러 서버에 지정된 파일 경로가 만들어지고 새 파일이 해당 위치로 복원됩니다.
새 미러링 세션에 대비해서 데이터베이스를 준비하려면 소유자가 주 서버에서 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' 문이 실행되는 순서는 매우 중요합니다.
미러 서버에서 첫 번째 문을 실행해야 합니다. 이 문을 실행할 때는 미러 서버에서 다른 서버 인스턴스에 연결하지 않고 대신 미러 서버는 주 서버에서 미러 서버에 연결할 때까지 기다리도록 데이터베이스에 지시합니다.
주 서버에서 두 번째 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)