web-dev-qa-db-ja.com

可用性グループを負荷分散する方法

SQL Serverクラスターの下に2つのサーバーがあります(サーバー1、サーバー2)

2可用性グループで構成されたデータベース(データベース1、データベース2)

サーバー1:
データベース1プライマリレプリカ
データベース2プライマリレプリカ

サーバー2:
データベース1:二次複製
データベース2:SECONDARY REPLICA

データベース1が多くのリソースを消費し始めており、3番目のサーバー(サーバー3)を追加してサーバー1の負荷を軽減したい場合、この例は可能ですか?

サーバー1:
データベース1 SECONDARY REPLICA
データベース2プライマリレプリカ

サーバー2:
データベース1 SECONDARY REPLICA
データベース2 SECONCARY REPLICA

サーバー3:
データベース1プライマリレプリカ
データベース2 SECONDARY REPLICA

ユーザーへの影響を最小限に抑えて構成することは可能ですか?サーバーにリソースを追加して垂直方向にスケーリングする可能性がないため、可用性グループを使用して水平方向にスケーリングする可能性を知りたいだけですバックアップはセカンダリレプリカで取得できますか?

2
J1mmy

百万ドルの質問は-現在のシナリオでWindowsフェールオーバークラスターにサーバーを追加する価値はありますか?

私見、いいえ-SQLサーバー2012を使用しているため。

どうして ?

SQL Server 2012および2014では、最初の読み取り専用レプリカがアクセス可能であれば、ルーティングリストで定義されている最初の利用可能なレプリカへの読み取り専用ルーティング向けトラフィックを許可します。

したがって、SQL Server 2012および2014では、読み取り要求を受け入れるために使用可能な複数のセカンダリがある場合でも、使用可能なセカンダリに読み取り負荷を分散することはできません。

SQL Server 2016では、読み取り専用レプリカのセット全体で負荷分散を構成できます

ユーザーへの影響を最小限に抑えて構成することは可能ですか?

最小限の影響で可能ですが、上で述べたように、それを行う価値はありません。

どうやってするの ?

  • サーバー3をWindowsフェールオーバークラスターに追加します。
  • サーバー1(プライマリであるため)から完全バックアップを取り、それを復元しますwith no recoveryサーバー3上。
  • サーバー1からログのバックアップを取り、それを復元しますwith norecoveryサーバー3上。
  • データベースを可用性グループに参加させます。
  • 同期モードを同期に変更してから、フェイルオーバーserver1.db1からserver3.db1 そして今 server3.db1がプライマリになります。
  • すべてのセカンダリレプリカのデータ移動を再開します。私のテストでは、データ移動が一時停止され、再開する必要があります。

以下はそれがどのように見えるかです(図面はきれいではありませんが、私が言っていることを説明しています:-))

enter image description here

バックアップはセカンダリレプリカで作成できますか?

はい、セカンダリレプリカでcopy_onlyの完全および定期的なログバックアップを実行できます。 プライマリデータベースでフルバックアップを実行する必要があります。

2
Kin Shah