翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
で SQL Server の Always On 可用性グループで読み取り専用ルーティングを設定する AWS
Subhani Shaik (Amazon Web Services)
概要
このパターンでは、読み取り専用ワークロードをプライマリレプリカからセカンダリレプリカにオフロードすることで、SQL Server Always On のスタンバイセカンダリレプリカを使用する方法について説明します。
データベースミラーリングには 1 対 1 のマッピングがあります。セカンダリデータベースを直接読み取ることはできないため、スナップショットを作成する必要があります。Always On アベイラビリティグループ機能は Microsoft SQL Server 2012 で導入されました。それ以降のバージョンでは、読み取り専用ルーティングなどの主要な機能が導入されています。Always On アベイラビリティグループでは、レプリカモードを読み取り専用に変更することで、セカンダリレプリカからデータを直接読み取ることができます。
Always On アベイラビリティグループソリューションは、高アベイラビリティ (HA)、ディザスタリカバリ (DR)、およびデータベースミラーリングの代替手段をサポートします。Always On アベイラビリティグループはデータベースレベルで機能し、一連のユーザーデータベースのアベイラビリティを最大化します。
SQL Server は読み取り専用ルーティングメカニズムを使用して、受信した読み取り専用接続をセカンダリ読み取りレプリカにリダイレクトします。そのためには、接続文字列に次のパラメータと値を追加する必要があります。
ApplicationIntent=ReadOnlyInitial Catalog=<database name>
前提条件と制限
前提条件
Virtual Private Cloud (VPC)、2 つのアベイラビリティーゾーン、プライベートサブネット、セキュリティグループ AWS アカウント を持つアクティブな
SQL Server 2019 Enterprise Edition Amazon Machine Image
with Windows Server Failover Clustering (WSFC) がインスタンスレベルで設定され、プライマリノード () とセカンダリノード ( WSFCNODE1) の間の SQL Server レベルで設定されている 2 つの Amazon Elastic Compute Cloud (Amazon EC2WSFCNODE2) マシン。これは、 という名前の AWS Directory Service for Microsoft Active Directory ディレクトリの一部です。tagechtalk.comセカンダリレプリカで
read-onlyを許可するように構成された 1 つ以上のノードAlways On アベイラビリティグループに対して
SQLAG1と名付けられたリスナー2 つのノードに対して同じサービスアカウントで実行されている SQL Server データベースエンジン
SQL Server Management Studio (SSMS)
testという名のテストデータベース
製品バージョン
SQL Server 2014 およびそれ以降
アーキテクチャ
ターゲットテクノロジースタック
Amazon EC2
AWS Managed Microsoft AD
Amazon FSx
ターゲットアーキテクチャ
次の図は、Always On アベイラビリティグループ (AG) リスナーが、接続内に ApplicationIntent パラメータを含むクエリを適切なセカンダリノードにリダイレクトする方法を示しています。

Always On アベイラビリティグループリスナーにリクエストが送信されます。
接続文字列に
ApplicationIntentパラメータがない場合、リクエストはプライマリインスタンスに送信されます。接続文字列に が含まれている場合
ApplicationIntent=ReadOnly、リクエストは読み取り専用ルーティング設定のセカンダリインスタンスに送信されます。これは Always On 可用性グループを持つ WSFC です。
ツール
AWS のサービス
AWS Directory Service for Microsoft Active Directory は、ディレクトリ対応のワークロードと AWS リソースが で Microsoft Active Directory を使用できるようにします AWS クラウド。
Amazon Elastic Compute Cloud (Amazon EC2) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
Amazon FSx は、業界標準の接続プロトコルをサポートし、 AWS リージョン全体で高い可用性とレプリケーションを提供するファイルシステムを提供します。
その他のサービス
SQL Server Management Studio (SSMS) は、SQL Server インスタンスを接続、管理、および管理するためのツールです。
sqlcmd はコマンドラインユーティリティです。
ベストプラクティス
Always On アベイラビリティグループの詳細については、SQL Server ドキュメント
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
レプリカを読み取り専用に更新します。 | プライマリレプリカとセカンダリレプリカの両方を読み取り専用に更新するには、SSMS からプライマリレプリカに接続し、「追加情報」セクションのステップ 1 コードを実行します。 | DBA |
ルーティング URL を作成する。 | 両方のレプリカのルーティング URL を作成するには、「追加情報」セクションのステップ 2 コードを実行します。このコードでは、 | DBA |
ルーティングリストを作成する。 | 両方のレプリカのルーティングリストを作成するには、追加情報セクションのステップ 3 コードを実行します。 | DBA |
ルーティングリストを検証します。 | SQL Server Management Studio からプライマリインスタンスに接続し、「追加情報」セクションのステップ 4 コードを実行してルーティングリストを検証します。 | DBA |
| タスク | 説明 | 必要なスキル |
|---|---|---|
|
| DBA |
フェイルオーバーを実行する。 |
| DBA |
| タスク | 説明 | 必要なスキル |
|---|---|---|
sqlcmd を使用して接続します。 | sqlcmd から接続するには、コマンドプロンプトの [追加情報] セクションからステップ 5 のコードを実行します。接続後、次のコマンドを実行して、接続されているサーバー名を表示します。
出力には現在のセカンダリレプリカ名 ( | DBA |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
リスナーの作成が失敗し、「WSFC クラスターはネットワーク名リソースをオンラインにできませんでした」というメッセージが表示された。 | 詳細については、Microsoft のブログ記事「リスナーの作成が失敗し、「WSFCクラスターはネットワーク名リソースをオンラインにできませんでした」というメッセージが表示される |
他のリスナーの問題やネットワークアクセスの問題などの潜在的な問題。 | Microsoft ドキュメントの「Always On アベイラビリティグループ構成のトラブルシューティング (SQL Server) |
関連リソース
追加情報
ステップ 1. レプリカを読み取り専用に更新する
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)) GO ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)) GO
ステップ 2. ルーティング URL を作成する
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode1.tagechtalk.com:1433')) GO ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode2.tagechtalk.com:1433')) GO
ステップ 3. ルーティングリストを作成する
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=('WSFCNODE2','WSFCNODE1'))); GO ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('WSFCNODE1','WSFCNODE2'))); GO
Step 4. ルーティングリストを検証する
SELECT AGSrc.replica_server_name AS PrimaryReplica, AGRepl.replica_server_name AS ReadOnlyReplica, AGRepl.read_only_routing_url AS RoutingURL , AGRL.routing_priority AS RoutingPriority FROM sys.availability_read_only_routing_lists AGRL INNER JOIN sys.availability_replicas AGSrc ON AGRL.replica_id = AGSrc.replica_id INNER JOIN sys.availability_replicas AGRepl ON AGRL.read_only_replica_id = AGRepl.replica_id INNER JOIN sys.availability_groups AV ON AV.group_id = AGSrc.group_id ORDER BY PrimaryReplica
ステップ 5. SQL コマンドユーティリティ
sqlcmd -S SQLAG1,1433 -E -d test -K ReadOnly