web-dev-qa-db-ja.com

SQL Serverのストレージプール構成

Azure VMで新しいSQL Server 2017常時接続クラスターを構築しています。 VMのデータディスクレイアウトは以下の通りです

TempDb      :   2    Azure Disk Read Cache    
TempDBLog   :   1    Azure Disk No Cache    
UserDB      :   3  Azure Disk   Read Cache    
UserDBLog   :   2  Azure Disk   No Cache

私の計画は、複数のストレージプール、つまり2つのTempDBディスクを持つTempDBストレージプール、3つのユーザーデータベースのAzureディスクを持つUserDBストレージプールを作成することです。

ただし、Azure VMのSQL Serverの Microsoftのドキュメント によると、

記憶域スペースなどのディスクストライピング手法を使用している場合は、ログファイル用とデータファイル用の2つのプールを使用して、最適なパフォーマンスを実現します。ただし、SQL Serverフェールオーバークラスターインスタンス(FCI)を使用する場合は、1つのプールを構成する必要があります。

これは常にオンに適用できますか、それとも共有ストレージFCIにのみ適用できますか?私をガイドしてください、参考のために良い記事/ドキュメントを共有してください。

ありがとう

2
user1716729

[単一のプールを使用して]常時オンに適用できるか、共有ストレージFCIにのみ適用できます。

AzureのFCIは、ディスクレプリケーションに ストレージスペースダイレクト を使用します。これは、この要件のソースであると思います。 AGの場合、複数の個別のディスクまたはプールを使用できます。各ノードで同じ論理ボリュームとパスが使用可能であることを確認する必要があります。そうしないと、プライマリでファイルおよびファイルグループの操作を実行するとAGレプリケーションが停止します。たとえば、ファイル 'g:\ sql\data\foo.ndf'をデータベースに追加する場合、その変更を複製するには、そのパスが他のすべてのクラスターノードに存在する必要があります。 失敗したAdd-File操作のトラブルシューティング(Always On可用性グループ) を参照してください。

また、Tempdbデータファイルを配置する場所には、Tempdbログも配置します。 tempdbのログを分割すると、十分に活用されない可能性が高く、IOアクセスパターンは、ユーザーデータベースのログファイルよりもtembdbデータファイルに似ています。特に、トランザクションコミットではtempdbログがフラッシュされません。 。

個人的な経験、リンクはありませんが、私はいつもこれらを顧客のために構築していました。

ディスクのパフォーマンスは、プールで使用されるディスクの数に応じて変化します(最大4つで、ディスクを追加してもパフォーマンスは向上しません)。プールで4台未満のディスクを使用することはお勧めしません。それらを4xData、4xLogに配置し、利用可能であれば、TempDBをVMのローカルSSD(ドライブD :?)に配置します。それ以外の場合は、4つのディスクの別のセットに配置します。 TempDBはサーバーの起動時に再構築されるため、一時的なストレージは問題ありません。

(標準ディスクを使用して)保存したデータの量に対してのみ支払うため、VMで許可されている数のディスクを取得します。これは、VM =選択し、それに接続するのに十分なディスクを取得します。

AGが機能するには、VMをFCIに配置する必要がありますが、それらはディスクを共有しないため、このルールは適用されません。 [〜#〜] uncheck [〜#〜]共有ストレージの追加ボタンを忘れないようにする必要があるため、これもセットアップ中のトリッキーな瞬間でした。

最後のアドバイスは、目撃者がSQLサーバーとは異なるリソースグループに属していることを確認することです。理想的には、クラウド監視オプションを使用してください。

編集:Azureに問題がある場合、一度にラック全体またはラックのサブセットで問題が発生する可能性がはるかに高くなります。ですから、あなたのプライマリと証人が同時に落ちる可能性が非常に高いです。セカンダリはクォーラムを取得しないため、自動的にフェイルオーバーすることはできません。

1
Jonathan Fite