web-dev-qa-db-ja.com

1つのサーバーでの複数のデータベースの問題

当社には5つの異なるデータベースがあります。複数のデータベースのいずれも、データベース間の結合に関連または利用していません。十分なリソースと予算があります。

私たちの会社は以下について議論しています:

  • 1つのサーバーインスタンス上の5つのデータベース

  • または5つの異なるサーバー上の5つのデータベース。

質問:すべてを1台のサーバーに配置した場合に発生する可能性のある特定の問題、障害の問題は何ですか?私の経歴はDBAではないので、チームと話し合うことができる例を知りたいです。

バックグラウンド:

会社での1つのサーバーインスタンスの引数:フェールオーバークラスタリングを備えた「リソースガバナー」と「AlwaysOn可用性グループ」があります。リソースガバナーは、データベース間のメモリ、CPU、IOワークロードを処理します。したがって、AlwaysOn DRと共に、暴走クエリ、不適切な設計、メモリの問題を処理できます。

データベースはそれぞれ100 GB、重要な企業情報、最低5,000万行

300トランザクション/秒を処理します

RTO = 10分

2
user129291

答えは定番です-「場合によって異なります!」

利害関係者と一緒に座り、2つのオプションの長所と短所を提示します。クライアントホスティングのビジネスで、私はこの状況に直面しており、以下が私の見解です。

複数のデータベースのいずれも、データベース間の結合に関連または利用していません。十分なリソースと予算があります。

これは、dbが分離されている、または独立していることを意味します。重要度と稼働時間のSLAに応じてデータベースをクラブ化し、2〜3台のサーバーに分散します(VMも別のオプションです)。この方法では、すべての卵を同じバスケットに入れないでください。

どうして ?

  • 1つのサーバーに5つのdbをすべて配置すると、単一障害点になります。単一のDBの問題により、他のすべてのDBが危険にさらされます。リスクをできる限り分離しますが、十分なリソースと予算を確保することで、追加のライセンスとメンテナンスのオーバーヘッドが発生します。
  • リソースガバナーを有効にしても、バッファープールは管理されません。 「ソート、ハッシュなどのクエリの作業メモリ」のみを管理します。 2014以降では、リソースガバナーを使用してIOPSを制限できます。
  • バックアップを実行するためにすべてのデータベースをホストしている特定のサーバーに対して1つのソリューションがあります-フルおよびログ、整合性チェック、インデックスのメンテナンス。サーバーに問題があり、そのジョブが途中で失敗した場合、問題を検出して修正し、残りを続行するための組み込みのメカニズムがない限り、他のデータベースが影響を受けます。
  • OSの外部の問題は、1つの場所にあるすべての資産に影響します。
  • AGを使用しても、一定量のワーカースレッドがあり、それらは単一サーバー上のすべてのデータベースと共有されます。重要度に応じてdbを分散させると、その問題は軽減されます。
  • Tempdbはサーバーごとに1つです。したがって、すべてのデータベースが同じサーバー上にあるとボトルネックになる可能性があると想像してください。
  • 1つのサーバーですべてのデータベースを処理している場合、問題の特定は困難です。

私は同様の答えを書きました どちらが良いですか:アプリケーションごとに1つのデータベース、または1つのデータベース?

7
Kin Shah