2ノードSQL Serverクラスターのリモートサイトでディザスターリカバリーとして維持する方が簡単です。
どんな提案も高く評価されます。
私の経験では、AlwaysOn高可用性グループであるHAGは、ログ配布よりも保守が簡単です。私たちのシナリオにいくつかの変数を設定しましょう。
1.)SQL ServerのバージョンとエディションはSQL Server 2016 Enterprise Editionです。最新のSQL Serverパッチレベルではありません。新しくリリースされたサービスパックを適用する必要があります。
2.)SQL Serverデータベース環境は、典型的な中小規模の企業に存在します(質問で説明したアクティブパッシブAlwaysOnビルドがこの結論につながります)。この会社には毎晩または毎週のメンテナンスウィンドウがありますが、ほとんどの会社と同様に、サービスレベル契約は稼働時間の4または5ナインです(データベースは99.99%または99.999%の時間利用可能でなければなりません)。
DBAが各機能を使用してITを維持する方法を見てみましょう。それらのアップタイムの数を維持することで幸せなマネージャー。
AlwaysOn HAGは、AlwaysOnレプリカ間でフェイルオーバーできる柔軟性を提供します。私の想定では、プライマリレプリカとセカンダリレプリカは互いに物理的に近接していません。おそらく、それらは異なるデータセンターまたはデータセンター内の異なるラックにあります。いずれにせよ、プライマリでメンテナンスを実行する必要がある場合は、可用性モードを非同期から同期、フェイルオーバーに設定し、メンテナンスを実行して、フェイルオーバーし、可用性モードを非同期に戻すことができます( https:// docs.Microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-modes-always-on-availability-groups )。正しく構成されたAlwaysOn HAGリスナーを使用すると、エンドユーザーはほとんどまたはまったく中断を経験せず、そのSLAを簡単に維持できます。
次に、ログ配布を見てみましょう。 Microsoftの書籍をオンラインでカットアンドペーストしないと、フェイルオーバーする前に手動で実行する必要がある5つのステップがあります。それらはここにあります... https://docs.Microsoft.com/en-us/sql/database-engine/log-shipping/fail-over-to-a-log-shipping-secondary- sql-server 。
ほとんどのインシデントまたはメンテナンスウィンドウが数時間後に発生することを考えると、レプリカ間で簡単にフェイルオーバーできる、またはトランザクションログバックアップを適用してプライマリデータベースとセカンダリデータベースを同期できるAlwaysOn高可用性グループが必要ですか?
説明したシナリオでは、可用性グループよりもログ配布を維持する方がはるかに簡単です。
AGを使用して迅速に前後にフェイルオーバーする機能は、高可用性には優れていますが、災害復旧RTO(リカバリー時間目標)は、それが災害であるため、はるかに長くなります。高可用性の目標は、すべてを60秒でバックアップすることですが、災害復旧の目標は60分です。ログ配布は、それを簡単に処理できる必要があります。
非同期コミットモードでリモートの3番目のAGノードを追加すること自体は簡単な作業ですが、それを維持するのは難しい場合があります。私自身のAGで問題が発生するのは次のとおりです。
可用性グループを使用すると、問題が発生する可能性が高く、トラブルシューティング情報を探す場所(DMV、エラーログ)が多くなります。 https://blogs.msdn.Microsoft.com/sql_server_team/troubleshooting -high-hadr_sync_commit-wait-type-with-always-on-availability-groups /
また、可用性グループにパッチを適用するだけに関連するいくつかの問題があります(このリストは少し古いことを認めています): https://www.brentozar.com/archive/2015/02/patching-sql-server-availability -groups /
また、AGを使用したWindows Serverフェールオーバークラスターの複雑さ、セットアップ、保守も追加されています。 (注:SQL Server 2017+は常にWSFCを必要とするわけではありません。)
メンテナンスのテクノロジー部分だけでなく、人員配置も考慮してください。本番環境を完全にカバーするには、AGの経験を持つDBAが少なくとも2人必要です。そのような経験を見つけることは困難であり、より高い給与を命じます。これをログシッピングと比較してください。ほとんどのDBA候補はその経験を持ち、それに伴う給与プレミアムはありません。
つまり、可用性グループに関する事実上すべては、DRノードへのフェールオーバープロセスを除いて、より高度なメンテナンスです。 DRノードのRTOが厳しい場合は、非同期ミラーリングまたはAGを使用する必要があります。同様に、AGの失敗を処理できる経験豊富なDBAチームがある場合は、おそらくそのルートをたどります。それ以外の場合は、ログ配布が維持しやすいテクノロジになります。
ログ配布は、DRの保守とトラブルシューティングの技術をはるかに簡単に実行できます。私は両方を広範囲に使用しており、ログ配布を優先します。
どうして?
少しのスクリプトでフェイルオーバー手順を簡単に自動化できるからです。ログ末尾のバックアップを取り、それを(既存のエージェントジョブを使用して)コピーしてコピーする(この場合も、既存のジョブを使用して)ニースフェールオーバーと復元で復元します。
ログ配布で問題が発生する可能性はほとんどありません。そして、それが起こったときに修正するのは簡単です。
確かに、ログ配布を監視するための特別なGUIはありませんが、難しくはなく、実際にジョブをチェックするエージェントジョブがあります。箱から出して。
AOAGはダウンしたりダウンしたりする可能性があり、アラートの設定方法がわからない限り、それが必要になるまでそれを知ることはできません。私が知っているのは、同期を停止したAOAGを持つサーバーを継承したからです。これらのサーバーが存在することを知るまでに数か月かかりました。
ログシッピングはアラートジョブを設定します。電子メールアラートが機能していることを確認すると、修正するまで何度も迷惑をかけます。
私はすべてDRにログ配布、ミラーリング、AOAGを使用しました。ログ配布を好みます。
常にオン。アプリケーションがリスナー用に適切に構成されている場合、1時間ごとにフェイルオーバーすることができ、99%のケースで誰も気にせず、ユーザーからの苦情もありません。また、それをサポートしていないレガシーアプリがフェイルオーバー中にほとんど問題なく動作することも確認しました。また、データベースをいくつかのグループに分け、それぞれに独自のリスナーを設定して、互いに独立してフェイルオーバーすることができます。または、VM環境に実質的にオーバーヘッドがない場合は、問題のデータベースをその独自のグループに配置して、フェイルオーバーが他のデータベースに影響を与えないようにすることができます。
AlwaysOnは読み取り専用もサポートしています。開発者がアプリに読み取り専用の接続をコーディングしている場合は、アプリケーションをセカンダリにポイントして選択できます。プライマリが他のアプリケーションの過負荷ハイパーバイザー上にある場合の便利な機能。
私は数ヶ月間ミラーリングを使用していませんが、単一のデータベースをフェイルオーバーした場合、DNSを手動で変更する必要があることを覚えています。
ミラーリングに関して私が見落としていることの1つは、問題が発生した場合にミラーリングがどれほど遅れているかをGUIが教えてくれたことです。理解できない複製の問題が数回ありました。次に、ミラーリング管理ツールを調べたところ、一部のデータベースが50GBか、ログデータの送信の背後にあることがわかりました。そしてそれは歴史を保ちました。予算が厳しく、監視ソフトウェアがない組織で作業している場合は、トラブルシューティングの一部としてミラーリング履歴を使用したり、問題に関する管理の質問に回答したりできます。