MS SQL Server 2014 AlwaysOn AGセットアップで、特定の可用性グループのバックアップジョブをスケジュールしたいと思います。最終的な目標は、同期されたセカンダリで定期的なバックアップを実行することであり、最も重要なことは、特定のセカンダリノードの可用性にバインドされないことです。
これまで見てきた方法は、SQL Serverスケジューラを使用し、実行中のすべてのインスタンスに同一のジョブをセットアップし、ロールがプライマリかセカンダリかを判断するために 条件付きロジックをスケジューラステップに導入する でした。これは、いくつかの理由で私のユースケースでは機能しません。
バックアップジョブは、実行中のBACKUP LOG [...] WITH COMPRESSION, NOINIT, NOFORMAT
15分ごと。
現在、それぞれのAGのフェールオーバークラスターロールにバインドされたクラスター化されたスケジュールされたタスクを作成することを考えていますが、これを実装するより簡単で合理的な方法があるかどうか疑問に思っています。
MS SQL Server 2014 AlwaysOn AGセットアップで、特定の可用性グループのバックアップジョブをスケジュールしたいと思います。最終的な目標は、同期されたセカンダリで定期的なバックアップを実行することであり、最も重要なことは、特定のセカンダリノードの可用性にバインドされないことです。
これは問題なく実行できます。システムは、AlwaysOn可用性グループの同期メカニズムの全負荷、必要なREDO、およびバックアップを実行できるように仕様化されている必要があることに注意してください。最後に、IO=システムを圧倒し、停止または大きなREDOキューを引き起こすことです。これは、読み取り可能なセカンダリとしてアクティブに使用されていないことを前提としています-使用されている場合、それを考慮に入れて、ブロックされたREDOスレッドを監視したい。
1.セカンダリでスケジュールされたアクションを1回だけ実行したいが、セカンダリが複数ある場合2.セカンダリが残っているかどうかに関係なく、最終的に確実に実行したい-セカンダリが残っていない場合は、セカンダリプライマリで実行
期待されるガイドライン内でこれを達成するために使用できる可用性グループ設定とシステム機能があります。
1つ目はAGごとの設定で、AUTOMATED_BACKUP_PREFERENCE
と呼ばれ、 4つの異なるオプション があります。あなたが説明しているものはSECONDARY
と呼ばれ、プライマリノードよりもセカンダリノードを優先します。選択されるセカンダリノードは、レプリカごとに0〜100の範囲で設定されるBACKUP_PRIORITY
によるものです。数値が大きいほど、重みが大きくなります。セカンダリレプリカの重みが同程度の場合は、システムの照合順序で最初にソートされるレプリカが選択されます。すべてのセカンダリレプリカに障害が発生した場合は、プライマリレプリカが選択されます。
方程式の2番目の部分は、前の段落の値に基づいて、ジョブを実行しているレプリカが優先レプリカであるかどうかを確認するために使用されるシステム関数です。このシステム関数は次のように呼び出されます sys.fn_hadr_backup_is_preferred_replica()。 データベース名(AG内の任意のデータベース)を指定すると、優先レプリカでない場合は値0が返され、優先レプリカでない場合は値1が返されます。推奨されます。
これを行うためのエージェントジョブを作成するときは、バックアップロジックをIF
条件にラップして、優先レプリカを確認する必要があります。それでおしまい。すべてのレプリカに同一のエージェントジョブを配置します。
これが本当にあなたが望んでいることであることをテストしてください。
私は Tivoli Storage FlashCopy Manager(TSM DP for SQL Server) について非常に良い経験があります。 TSM DPは、可用性グループ内の任意のノードからのバックアップを許可します。バックアップとログを1つのTSMノードに格納することにより、冗長なバックアップが回避されます。