PCLUSAPI_BACKUP_CLUSTER_DATABASE
コールバックシグネチャ
DWORD PCLUSAPI_BACKUP_CLUSTER_DATABASE(
HCLUSTER hCluster,
LPWSTR lpszPathName
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| hCluster | HCLUSTER | バックアップ対象のクラスターへのハンドルです。 |
| lpszPathName | LPWSTR | バックアップの作成先となるパスを指定する、null 終端の Unicode 文字列です。クラスターの構成情報がこの場所に保存されます。これは保護すべき機微なデータです。たとえば、アクセス制御リストを使用して、データが格納される場所へのアクセスを制限することで保護できます。 |
公式ドキュメント
[この関数は、「要件」セクションに記載されたオペレーティングシステムで使用できます。この関数のサポートは Windows Server 2008 で削除されており、この関数は何も行わずに ERROR_CALL_NOT_IMPLEMENTED を返します。]
クラスターデータベース と、すべてのレジストリ チェックポイント のバックアップを作成します。
戻り値
関数が成功した場合は ERROR_SUCCESS を返します。
関数が失敗した場合は、 システムエラーコード のいずれかを返します。
解説(Remarks)
指定するパスは、UNC パスのように、すべてのクラスター ノード から参照できるパスであることが理想です。少なくとも、現在 クォーラムリソース を所有しているノードから参照できる必要があります。パスにファイル名を含めないでください。含めた場合、この関数は失敗し ERROR_DIRECTORY を返します。 パスの末尾に円記号(バックスラッシュ)を含めることはできます。
適切なパスを確実に用意する方法の 1 つとして、次のように一時的なネットワーク共有を作成する方法があります。
- NetShareAdd 関数を呼び出して、一時的なネットワーク共有を作成します。すべてのクラスターノードが、この共有への書き込みアクセス権を持っている必要があります。
- lpszPathName パラメーターに一時共有を指定して、BackupClusterDatabase を呼び出します。
- バックアップファイル(下記参照)を、1 つ以上の安全な保存場所にコピーします。
- NetShareDel 関数を呼び出して、共有を削除します。
| パス\ファイル | 説明 |
|---|---|
| lpszPathName\chk????.tmp | スナップショットファイル。 |
| lpszPathName\quolog.log | クォーラムログファイル。 |
| lpszPathName\<GUID of resource>\*.CPT | GUID で識別されるリソースのレジストリチェックポイントファイル。 |
| lpszPathName\<GUID of resource>\*.CPR | GUID で識別されるリソースの暗号チェックポイントファイル。 |
| lpszPathName\Clusbackup.dat | バックアップ完了マーカーファイル(読み取り専用、隠しファイル、0 バイトのファイル) |
同じ lpszPath パラメーターを使用して以降に BackupClusterDatabase を実行すると、既存のバックアップファイルは上書きされます。
可能であれば、バックアップディレクトリの複製を異なるメディア上に複数作成し、それぞれ別の場所に保管してください。
例
次の例は、静的なバックアップルーチンを示しています。RestoreClusterDatabase を組み込んだ、より完全な例については Backing Up and Restoring the Cluster Configuration を参照してください。 この例では、フェールオーバークラスターのドキュメントで定義されている ClusDocEx.h ヘッダーファイルを使用します。
int main( void )
{
HCLUSTER hCluster = NULL;
WCHAR szClusterName[] = L"CLUSTER_NAME";
WCHAR szPath[] = L"\\\\ClusBack\\19991215";
DWORD dwResult = ERROR_SUCCESS;
if( ( hCluster = OpenCluster( szClusterName ) ) != NULL )
{
dwResult = BackupClusterDatabase( hCluster, szPath );
CloseCluster( hCluster );
}
else
dwResult = GetLastError();
if( dwResult == ERROR_SUCCESS )
{
wprintf( L"\nDone. The cluster database has been backed up to %s. ", szPath );
wprintf( L"The backup consists of the following files:\n chk????.tmp\n"
L" quolog.log\n *.cpt\n *.cpr\n\n" );
return 0;
}
else
{
wprintf( L"The operation failed (%d)\n", dwResult );
return 1;
}
}
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)