バックアップからの証明書サービスの復元
次のシナリオでは、Certificate Services バックアップ機能を使用して、Certificate Services データベースとその関連ファイルを復元および復旧する方法を示します。 復元プロセスでは、バックアップ セットに含まれるファイルをディスクに書き込みます。 複数のバックアップ セット (1 つの完全バックアップと 0 個以上の増分バックアップ) を復元できますが、復旧プロセスを開始する前にすべての復元を完了する必要があります。 回復プロセスでは、Certificate Services がログ ファイルを再生してデータベースとログ ファイルの一貫性を確保し、データベースの整合性を確保します。 このシナリオでは、バックアップ セットを復元し、回復パラメーターを Certificate Services に通知する関数呼び出しを示します。
このシナリオを実装する前に、Certificate Services データベースの既存の完全バックアップが存在している必要があります。
- Certadm.dll ライブラリをメモリに読み込みます ( LoadLibrary を呼び出します)。
- Certadm.dllで必要な各関数のアドレスを取得します ( GetProcAddress を使用)。 これらのアドレスは、残りの手順で関数を呼び出すときに使用します。
- 証明書サービスがオンラインかどうかを判断するには、 CertSrvIsServerOnline を呼び出します。 証明書サービスが実行されている場合は、続行する前にシャットダウンします。 復元操作を成功させるには、証明書サービスをオンラインにすることはできません。
- 復元セッションを開始するには、 CertSrvRestorePrepare を呼び出します。 結果として得られる Certificate Services バックアップ コンテキスト ハンドルは、他のいくつかの機能によって使用されます。
- データベースの場所のパスを決定します。 バックアップ シナリオでは、この値は CertSrvRestoreGetDatabaseLocations の呼び出しから使用できます。この値はバックアップの一部として格納されている必要があります。
- 復元されたデータベースの名前を指定する復元マップを作成します。 Certificate Services データベースの復元マップ構造 (CSEDB_RSTMAPW) を使用して、復元マップを指定します。 CSEDB_RSTMAPWの pwszDatabaseName メンバーとCSEDB_RSTMAPWの pwszNewDatabaseName メンバーを、手順 5 で決定したデータベースの場所に設定します。 必要に応じて、復元されたデータベースの名前がバックアップ データベースとは異なる場合は、CSEDB_RSTMAPWの pwszNewDatabaseName メンバーを新しいデータベース名に設定します。
- バックアップの実行後にデータベースに加えられた変更が(次の証明書サービスの起動時に実行されるデータベース回復の一環として) 完了した後に再適用されないようにする場合は、ターゲット サーバーのアクティブなデータベースとログ ディレクトリからファイルを削除します。
- 完全バックアップに含まれるファイルを、ターゲット サーバーのアクティブなデータベースとログ ディレクトリにコピーします。
- CertSrvRestoreRegister を呼び出して、完全バックアップの復元操作を登録します。 CertSrvRestoreRegister は、手順 6 で指定された復元マップを使用します。 CertSrvRestoreRegister では、バックアップ データベースとログの場所も指定します。 CertSrvRestoreRegister を呼び出すと、次回の起動時に証明書サービスに復元操作が強制的に試行されます。 また、復元が完了するまで、証明書サービスが証明書要求を処理するのを防ぎます。
- CertSrvRestoreRegisterComplete を呼び出して、手順 8 で開始した登録アクティビティを終了します。 復元操作の登録は、証明書サービスの起動時に従う指示であることに注意してください。実際の回復は、証明書サービスが開始された後にのみ行われます。
- 復元する増分バックアップごとに、増分バックアップに含まれるファイルをターゲット サーバーのアクティブ ログ ディレクトリにコピーし、 CertSrvRestoreRegister を呼び出してから、 CertSrvRestoreRegisterComplete を呼び出します。 復元のための増分バックアップの登録は任意の順序で行うことができますが、 CertSrvRestoreRegister を呼び出すたびに、1 つの増分バックアップのファイルセットのみをサーバーにコピーする必要があります。
- Certificate Services 動的ファイルをターゲット サーバーにコピーします。 動的ファイルは、 CertSrvBackupGetDynamicFileList が呼び出されたときに、バックアップ中に識別されました。 動的ファイルの上書きを許可するには、World Wide Web Publishing Service を停止することが必要な場合があります。
- 復元セッションを終了するには、 CertSrvRestoreEnd を呼び出します。
- Certificate Services アプリケーションを手動で起動します (または、次回の再起動が自動的に開始されるまで待ちます)。 Certificate Services が起動すると、復元操作が登録されているかどうかを判断します。復元操作が登録されている場合、証明書サービスは回復を開始します。 証明書サービスは、回復操作が完了するまで証明書要求を処理しません。
Note
復旧が完了したら、Certificate Services データベースの新しい完全バックアップを作成することが重要です。 これは、復元されたログ ファイルを切り捨て、将来の復元のためにベース バックアップ セットを確立するために必要です。 復元後に実行されるバックアップは、復元前に作成されたバックアップ (完全または増分) と混在することはできません。つまり、証明書サービス データベースが復元され、後続の状態に進んだ後は、復元前バックアップを使用してデータベースを後続の状態に復元することはできません。