데이터베이스 미러링 설정 문제 해결
업데이트: 2008년 11월 17일
이 항목에서는 데이터베이스 미러링 세션을 설정할 때 발생하는 문제를 해결하는 데 도움이 되는 정보를 제공합니다.
문제점 | 요약 |
---|---|
계정 |
SQL Server가 실행되고 있는 계정을 올바르게 구성하기 위한 요구 사항에 대해 설명합니다. |
끝점 |
각 서버 인스턴스의 데이터베이스 미러링 끝점을 올바르게 구성하기 위한 요구 사항에 대해 설명합니다. |
시스템 주소 |
데이터베이스 미러링 구성에서 서버 인스턴스의 시스템 이름을 지정하는 대체 방법을 요약합니다. |
네트워크 액세스 |
각 서버 인스턴스에서 TCP를 통해 다른 서버 인스턴스의 포트에 액세스할 수 있어야 한다는 요구 사항에 대해 설명합니다. |
미러 데이터베이스 준비 |
미러링이 시작될 수 있도록 미러 데이터베이스를 준비하기 위한 요구 사항을 요약합니다. |
파일 생성 작업 실패 |
파일 생성 작업이 실패할 경우의 대처 방법에 대해 설명합니다. |
미러링 시작(Transact-SQL) |
ALTER DATABASE database_name SET PARTNER ='partner_server' 문의 지정된 순서에 대해 설명합니다. |
계정
SQL Server를 실행하고 있는 계정이 올바르게 구성되어 있어야 합니다.
- 계정에 올바른 권한이 있어야 합니다.
- 계정이 동일한 도메인 계정에서 실행되는 경우 잘못 구성할 가능성이 줄어듭니다.
- 계정이 서로 다른 도메인에서 실행되거나 도메인 계정이 아닐 경우 다른 컴퓨터의 master에 한 계정의 로그인을 만들고 끝점에 대한 CONNECT 권한을 해당 로그인에 부여해야 합니다. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리을 참조하십시오. 여기에는 네트워크 서비스 계정이 포함됩니다.
- SQL Server가 로컬 시스템 계정을 사용하는 서비스로 실행되는 경우 인증서를 사용하여 인증해야 합니다. 자세한 내용은 데이터베이스 미러링에 대한 인증서 사용를 참조하십시오.
끝점
끝점을 올바르게 구성해야 합니다.
각 서버 인스턴스(주 서버, 미러 서버 및 미러링 모니터 서버)에는 데이터베이스 미러링 끝점이 있어야 합니다. 자세한 내용은 sys.database_mirroring_endpoints(Transact-SQL) 및 인증 형식에 따라 방법: Windows 인증에 대한 미러링 끝점 만들기(Transact-SQL) 또는 방법: 데이터베이스 미러링의 아웃바운드 연결에 대한 인증서 사용 허용(Transact-SQL)을 참조하십시오.
포트 번호가 정확한지 확인합니다.
서버 인스턴스의 데이터베이스 미러링 끝점과 현재 연결된 포트를 식별하려면 다음 Transact-SQL 문을 사용합니다.SELECT type_desc, port FROM sys.tcp_endpoints; GO
설명하기 어려운 데이터베이스 미러링 설정 문제의 경우 각 서버 인스턴스를 검사하여 올바른 포트에서 수신하고 있는지 확인하는 것이 좋습니다. 포트 가용성 확인에 대한 자세한 내용은 MSSQLSERVER_1418을 참조하십시오.
끝점이 시작되었는지 확인합니다(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 권한이 있는 사용자를 파악하려면 각 서버 인스턴스에서 다음 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 옵션을 포함해야 합니다.
중요: |
---|
미러 데이터베이스를 만들 때 데이터베이스 파일을 이동한 경우 나중에 데이터베이스에 파일을 추가하려면 미러링을 일시 중지해야 할 수도 있습니다. |
데이터베이스 미러링이 중지된 경우 주 데이터베이스에서 수행된 모든 후속 로그 백업을 미러 데이터베이스에 적용해야만 미러링을 다시 시작할 수 있습니다.
자세한 내용은 방법: 미러 데이터베이스의 미러링 준비(Transact-SQL)를 참조하십시오.
파일 생성 작업 실패
미러링 세션에 영향을 주지 않고 파일을 추가하려면 파일의 경로가 두 서버 모두에 있어야 합니다. 따라서 미러 데이터베이스를 만들 때 데이터베이스 파일을 이동한 경우 이후의 파일 추가 작업이 미러 데이터베이스에서 실패하면서 미러링이 일시 중지될 수도 있습니다.
이 문제를 해결하려면
- 데이터베이스 소유자가 미러링 세션을 제거한 후 추가된 파일이 있는 파일 그룹의 전체 백업을 복원해야 합니다.
- 그런 다음 소유자는 주 서버에서 파일 추가 작업이 포함된 로그를 백업한 후 WITH NORECOVERY 및 WITH MOVE 옵션을 사용하여 미러 데이터베이스에서 로그 백업을 수동으로 복원해야 합니다. 이렇게 하면 지정된 파일 경로가 미러 서버에 만들어지고 해당 위치에 새 파일이 복원됩니다.
- 새 미러링 세션을 위한 데이터베이스를 준비하려면 소유자가 WITH NO RECOVERY를 사용하여 주 서버의 다른 처리 중인 로그 백업을 복원해야 합니다.
자세한 내용은 데이터베이스 미러링 제거, 방법: 미러 데이터베이스의 미러링 준비(Transact-SQL), 방법: Windows 인증을 사용하여 데이터베이스 미러링 세션 구성(Transact-SQL), 데이터베이스 미러링에 대한 인증서 사용 또는 방법: 데이터베이스 미러링 세션 구성(SQL Server Management Studio)을 참조하십시오.
미러링 시작(Transact-SQL)
ALTER DATABASE database_name SET PARTNER ='partner_server' 문을 실행하는 순서는 매우 중요합니다.
- 미러 서버에서 첫 번째 문을 실행해야 합니다. 이 문을 실행할 때는 미러 서버에서 다른 서버 인스턴스에 연결하지 않고 대신 주 서버가 미러 서버에 접속할 때까지 기다리도록 해당 데이터베이스에 지시합니다.
- 주 서버에서 두 번째 ALTER DATABASE 문을 실행해야 합니다. 이 문을 실행하면 주 서버가 미러 서버에 연결을 시도합니다. 이 연결이 생성되면 미러 서버는 다른 연결을 통해 주 서버에 연결을 시도합니다.
자세한 내용은 ALTER DATABASE(Transact-SQL)를 참조하십시오.
오류 메시지 1418
이 SQL Server 메시지는 서버 네트워크 주소가 없거나 도달할 수 없음을 나타내며 네트워크 주소 이름을 확인한 후 명령을 다시 실행하도록 제안합니다. 자세한 내용은 MSSQLSERVER_1418을 참조하십시오.
데이터베이스 간 트랜잭션
자동 장애 조치(Failover) 있는 보호 우선 모드로 데이터베이스를 미러링하는 경우 자동 장애 조치로 인해 미결 트랜잭션이 자동으로 잘못 해결될 수 있습니다. 데이터베이스 간 트랜잭션을 커밋하는 동안 두 데이터베이스 중 하나에서 자동 장애 조치가 수행되면 데이터베이스 간에 논리적 불일치가 발생할 수 있습니다.
자동 장애 조치의 영향을 받을 수 있는 데이터베이스 간 트랜잭션 유형은 다음과 같습니다.
- 동일한 SQL Server 인스턴스에서 여러 데이터베이스를 업데이트하는 트랜잭션
- MS DTC(Microsoft Distributed Transaction Coordinator)를 사용하는 트랜잭션
자세한 내용은 데이터베이스 미러링 및 데이터베이스 간 트랜잭션을 참조하십시오.
참고 항목
작업
방법: Windows 인증에 대한 미러링 끝점 만들기(Transact-SQL)
개념
관련 자료
도움말 및 정보
변경 내역
릴리스 | 내역 |
---|---|
2008년 11월 17일 |
|
2006년 4월 14일 |
|
2005년 12월 5일 |
|