SQL Server 2008 R2 を実行している 2 台の Windows Server 2008 R2 x64 マシンのクラスターから、同じ OS と DB を実行している 1 台のマシンへのログ配布を構成しようとしています。セットアップは正常に行われているように見えますが (エラーなし)、スケジュールされた時間にプライマリ マシンの SQL Server イベント ログに次の 2 つのエラーが表示されます。
BACKUP コマンド BACKUP LOG MyDb を完了できませんでした。詳細なメッセージについては、バックアップ アプリケーション ログを確認してください。
エラー: 3041、重大度 16、状態 1
質問: 1. 「バックアップ アプリケーション ログ」はどこにありますか? 2. エラー 3041 が何であるかを確認するにはどうすればよいですか?
SQL Server と SQL Server エージェントは、ドメイン アカウントの下でプライマリとセカンダリで実行されています。セカンダリに \secondary\SqlLogShipData として共有を作成し、ドメイン アカウントにフル コントロールを与え、Backup と Destination という 2 つのサブディレクトリを追加しました。
ログ配布を構成するときに、バックアップ フォルダーへのネットワーク パスとして \secondary/SqlLogShipData\Backup を指定し、セカンダリの場合は、コピーされたファイルの保存先フォルダーとして \secondary\SqlLogShipData\Destination を指定しました。
プライマリはクラスターであり、どちらかのノードがアクティブなときにログ配布が機能するようにしたいため、バックアップ フォルダーをセカンダリに配置しました。プライマリのローカル ディレクトリを指定することも試みましたが、違いはありませんでした。
セカンダリの SQL イベント ログには関連するエラーはありません。
これは権限の問題だと思いますが、理由はよく分かりません。何か助けていただけるとありがたいです。
答え1
クラスター上でのログ配布の構成は非常に簡単な設定です。私は何度も使用しました。
始める前に、既存のログ配布設定が機能していないので必ず削除してください。セカンダリを削除してから、プライマリを削除します。
前提条件
まず、いくつかの前提条件を確認しましょう。
- データベースは完全復旧モデルになっていますか?
- 完全バックアップは取得されましたか?
- LOG バックアップ ジョブは実施されていますか? 実施されている場合は、このデータベースをそのジョブから必ず削除してください。Log Shipping が LOG バックアップを処理します。
プライマリセットアップ
さて、ログ シッピングの設定を順に見ていきましょう。
まず、ログ シッピング プライマリが動作するかどうかを確認します。
データベースのプロパティに戻り、「これをプライマリデータベースとして有効にする」をチェックし、バックアップ設定ボタン。
ここでは、ログ バックアップへのネットワーク パスと、同じログ バックアップへのローカル パスの 2 つを指定する必要があります。
私のサーバーでは、次のようになります。
- C:\SQL バックアップ\LS
- \MyServer\LS
ログ配布フォルダの権限
次に、Windows エクスプローラーでこのフォルダーを見つけて右クリックし、プロパティを選択して、「アクセス許可」タブを選択します。ここで、プライマリ SQL エージェント サービス アカウントを追加し、このフォルダーに対する読み取りおよび書き込みアクセス許可があることを確認する必要があります。
次に、[共有] タブを選択します。ここで、フォルダーを共有し、セカンダリ SQL Server サービス アカウントに共有に対する読み取り権限があることを確認する必要があります。
ログシッピングバックアップをテストする
これが完了したら、ログ シッピング バックアップをテストしてみましょう。SQL エージェント ジョブを確認すると、LSBackup_YourDatabase という名前のものが表示されます。
ジョブを右クリックして実行します。エラーは、フォルダーと共有のアクセス許可に関連している可能性があります。詳細を投稿してください。
まずこの部分が動作するまでセカンダリを構成しないでください。
セカンダリを初期化する
ログ シッピング バックアップ ジョブをエラーなしで複数回実行したら、完全バックアップ ジョブをもう一度実行します。
FULL バックアップをセカンダリ サーバーにコピーして復元します。必ず NORECOVERY を使用してください。
セカンダリセットアップ
データベースのプロパティに戻り、ログ配布セクションに移動します。セカンダリ データベース領域で [追加] をクリックします。セカンダリ サーバーに接続します。
[初期化] タブで [いいえ、セカンダリは初期化されています] を選択します。
コピー タブで、ログ配布バックアップ ファイルのコピー先となるセカンダリ サーバーのローカル フォルダーを入力します。セカンダリ SQL エージェント サービス アカウントに、このフォルダーに対する読み取りおよび書き込み権限があることを確認してください。
コピージョブと復元ジョブをテストする
セカンダリ サーバーでコピー ジョブを実行します。エラーは、フォルダーとそのアクセス許可に関連している可能性が最も高いです。詳細を投稿します。ジョブ履歴にログを記録します。組み込みのログ配布レポートを使用して、進捗状況を確認します。
コピー ジョブが動作したら、復元ジョブに進みます。テスト手順は同じです。
幸運を!
答え2
ノードのローカル ドライブの 1 つへの書き込みに問題がある場合に備えて、バックアップ用の追加クラスター ディスクを作成してみてください。そうすれば、ログ配布は常に機能するはずです。それができない場合は、別のリモート サーバーからログ配布をバックアップして復元します。