백업에서 인증서 서비스 복원
다음 시나리오에서는 Certificate Services 백업 함수를 사용하여 Certificate Services 데이터베이스 및 관련 파일을 복원하고 복구하는 방법을 보여 줍니다. 복원 프로세스에는 백업 세트에 포함된 파일을 디스크에 쓰는 작업이 포함됩니다. 여러 백업 집합(하나의 전체 백업과 0개 이상의 증분 백업)을 복원할 수 있지만 복구 프로세스를 시작하기 전에 모든 복원을 완료해야 합니다. 복구 프로세스에는 인증서 서비스가 로그 파일을 재생하여 데이터베이스 및 로그 파일 일관성을 보장하여 데이터베이스 무결성을 보장하는 작업이 포함됩니다. 이 시나리오에서는 백업 집합을 복원하고 인증서 서비스에 복구 매개 변수를 알리는 함수 호출을 보여 줍니다.
이 시나리오를 구현하기 전에 인증서 서비스 데이터베이스의 기존 전체 백업이 있어야 합니다.
- LoadLibrary를 호출하여 Certadm.dll 라이브러리를 메모리에 로드합니다.
- getProcAddress를 통해 Certadm.dll 필요한 각 함수의 주소를 검색합니다. 나머지 단계에서 함수를 호출할 때 이러한 주소를 사용합니다.
- CertSrvIsServerOnline을 호출하여 인증서 서비스가 온라인 상태인지 확인합니다. 인증서 서비스가 실행 중인 경우 계속하기 전에 종료합니다. 복원 작업이 성공하려면 인증서 서비스가 온라인 상태여야 합니다.
- CertSrvRestorePrepare를 호출하여 복원 세션을 시작합니다. 결과 Certificate Services 백업 컨텍스트 핸들은 다른 여러 함수에서 사용됩니다.
- 데이터베이스 위치의 경로를 결정합니다. 백업 시나리오에서 이 값은 CertSrvRestoreGetDatabaseLocations 호출에서 사용할 수 있었을 것입니다. 이 값은 백업의 일부로 저장되어야 합니다.
- 복원된 데이터베이스의 이름을 지정하는 복원 맵을 만듭니다. 인증서 서비스 데이터베이스 복원 맵 구조(CSEDB_RSTMAPW)는 복원 맵을 지정하는 데 사용됩니다. CSEDB_RSTMAPW pwszDatabaseName 멤버와 CSEDB_RSTMAPW pwszNewDatabaseName 멤버를 5단계에서 결정한 데이터베이스 위치로 설정합니다. 필요에 따라 복원된 데이터베이스의 이름이 백업 데이터베이스와 다른 경우 CSEDB_RSTMAPW pwszNewDatabaseName 멤버를 새 데이터베이스 이름으로 설정합니다.
- 데이터베이스 복원이 완료된 후(다음 인증서 서비스를 시작하는 동안 수행된 데이터베이스 복구의 일부로) 백업이 수행된 후 데이터베이스에 대한 수정 사항이 다시 적용되지 않도록 하려면 대상 서버의 활성 데이터베이스 및 로그 디렉터리에서 파일을 삭제합니다.
- 전체 백업에 포함된 파일을 대상 서버의 활성 데이터베이스 및 로그 디렉터리에 복사합니다.
- CertSrvRestoreRegister를 호출하여 전체 백업에 대한 복원 작업을 등록합니다. CertSrvRestoreRegister 는 6단계에 지정된 복원 맵을 사용합니다. CertSrvRestoreRegister 는 백업 데이터베이스 및 로그의 위치도 지정합니다. CertSrvRestoreRegister를 호출하면 인증서 서비스가 다음에 시작될 때 복원 작업을 강제로 시도합니다. 또한 복원이 완료될 때까지 인증서 서비스에서 인증서 요청을 처리하지 못하도록 방지합니다.
- CertSrvRestoreRegisterComplete를 호출하여 8단계에서 시작된 등록 작업을 완료합니다. 복원 작업의 등록은 인증서 서비스가 시작될 때 따라야 하는 지침입니다. 실제 복구는 인증서 서비스가 시작된 후에만 수행됩니다.
- 복원할 각 증분 백업에 대해 증분 백업에 포함된 파일을 대상 서버의 활성 로그 디렉터리에 복사한 다음 CertSrvRestoreRegister를 호출한 다음 CertSrvRestoreRegisterComplete를 호출합니다. 복원을 위한 증분 백업 등록은 순서에 관계없이 발생할 수 있지만 CertSrvRestoreRegister를 호출하기 전에 증분 백업에 대한 파일 집합만 서버에 복사해야 합니다.
- 인증서 서비스 동적 파일을 대상 서버에 복사합니다. CertSrvBackupGetDynamicFileList가 호출되었을 때 백업 중에 동적 파일이 식별되었을 것입니다. 동적 파일을 덮어쓸 수 있도록 World Wide Web Publishing Service를 중지해야 할 수 있습니다.
- CertSrvRestoreEnd를 호출하여 복원 세션을 종료합니다.
- 인증서 서비스 애플리케이션을 수동으로 시작합니다(또는 다음 재시작이 자동으로 시작될 때까지 기다립니다). 인증서 서비스가 시작되면 복원 작업이 등록되었는지 여부를 결정합니다. 복원 작업이 등록되면 인증서 서비스가 복구를 시작합니다. 인증서 서비스는 복구 작업이 완료될 때까지 인증서 요청을 처리하지 않습니다.
참고
복구가 완료되면 Certificate Services 데이터베이스의 새 전체 백업을 만드는 것이 중요합니다. 복원된 로그 파일을 잘라내고 향후 복원을 위한 기본 백업 집합을 설정하는 데 필요합니다. 복원 후에 수행된 백업은 복원 전에 수행된 백업(전체 또는 증분)과 혼합할 수 없습니다. 즉, 인증서 서비스 데이터베이스가 복원되고 후속 상태로 진행되면 사전 복원 백업을 사용하여 데이터베이스를 해당 후속 상태로 복원할 수 없습니다.