

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 分散可用性グループを使用して SQL Server を AWS に移行する
<a name="migrate-sql-server-to-aws-using-distributed-availability-groups"></a>

*Amazon Web Services、Praveen Marthala*

## 概要
<a name="migrate-sql-server-to-aws-using-distributed-availability-groups-summary"></a>

Microsoft SQL Server Always On 可用性グループは、SQL Server に高可用性 (HA) およびディザスタリカバリ (DR) ソリューションを提供します。可用性グループは、読み取り/書き込みトラフィックを受け入れるプライマリレプリカと、読み取りトラフィックを受け入れる最大 8 つのセカンダリレプリカで構成されます。可用性グループは 2 つ以上のノードで構成される Windows Server フェールオーバークラスター (WSFC) 上に構成されます。

Microsoft SQL Server Always On 分散可用性グループは、2 つの独立した WFSC 間で 2 つの別々の可用性グループを構成するソリューションを提供します。分散可用性グループに含まれる可用性グループは、同じデータセンター内にある必要はありません。1 つの可用性グループをオンプレミスに配置し、もう 1 つの可用性グループを別のドメインの Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上の Amazon Web Services (AWS) クラウドに配置できます。 

このパターンは、分散可用性グループを使用して、既存の可用性グループの一部であるオンプレミスの SQL Server データベースを、Amazon EC2 に可用性グループが設定された SQL Server に移行する手順の概要を示しています。このパターンに従うことで、カットオーバー中のダウンタイムを最小限に抑えながら、データベースを AWS クラウドに移行できます。データベースは、カットオーバー直後から AWS で高い可用性を発揮します。このパターンを使用して、同じバージョンの SQL Server を維持したまま、基盤となるオペレーティングシステムをオンプレミスから AWS に変更することもできます。

## 前提条件と制限
<a name="migrate-sql-server-to-aws-using-distributed-availability-groups-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ AWS Direct Connect または AWS Site-to-Site VPN
+ オンプレミスと AWS の 2 つのノードに同じバージョンの SQL Server がインストールされている

**製品バージョン**
+ SQL Server バージョン 2016 以降)
+ SQL Server Enterprise Edition

## アーキテクチャ
<a name="migrate-sql-server-to-aws-using-distributed-availability-groups-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスで Always On 可用性グループを使用する Microsoft SQL Server データベース

**ターゲットテクノロジースタック**
+ AWS クラウド上の Amazon EC2 にある Always On アベイラビリティグループを備えた Microsoft SQL Server データベース

**移行アーキテクチャ**

![\[オンプレミスと AWS の可用性グループで同期レプリケーションを使用する SQL Server。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6e229e30-9b11-4ccb-bccd-cbe6601139c0/images/79ee7911-d68f-4db7-9b94-113dcf09c28b.png)


用語
+ WSFC 1 — オンプレミスの WSFC
+ WSFC 2 — AWS クラウド上の WSFC
+ AG 1 — WSFC 1 にある最初のアベイラビリティグループ
+ AG 2 — WSFC 2 にある 2 番目のアベイラビリティグループ
+ SQL Server プライマリレプリカ — AG 1 のノードで、すべての書き込みのグローバルプライマリと見なされます。
+ SQL Server フォワーダー — SQL Server プライマリレプリカからデータを非同期で受信する AG 2 のノード
+ SQL Server セカンダリレプリカ — プライマリレプリカまたはフォワーダーからデータを同期的に受信する AG 1 または AG 2 のノード

## ツール
<a name="migrate-sql-server-to-aws-using-distributed-availability-groups-tools"></a>
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html), ―標準イーサネット光ファイバケーブルを介して、内部ネットワークを AWS Direct Connect ロケーションにリンクします。この接続を使用すると、パブリック AWS サービスに*仮想インターフェイス*を直接作成できるため、ネットワークパスのインターネットサービスプロバイダーを回避できます。
+ 「[Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/concepts.html)」— Amazon Elastic Compute Cloud (Amazon EC2) は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。Amazon EC2 を使用して必要な分だけ仮想サーバーを起動し、スケールアウトまたはスケールインできます。
+ [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) — AWS Site-to-Site VPN は、Site-to-Site 仮想プライベートネットワークの作成をサポートします。AWS で起動するインスタンスと独自のリモートネットワーク間でトラフィックを渡すように VPN を設定できます。
+ [マイクロソフトSQLサーバー管理スタジオ](https://docs.microsoft.com/en-us/sql/ssms/sql-server-management-studio-ssms?view=sql-server-ver15) — マイクロソフトSQLサーバー管理スタジオ(SSMS) は、SQL Server インフラストラクチャを管理するための統合環境です。SQL Server とやり取りする豊富なスクリプトエディターを備えたユーザーインターフェイスとツールグループを備えています。

## エピック
<a name="migrate-sql-server-to-aws-using-distributed-availability-groups-epics"></a>

### AWS に 2 つ目のアベイラビリティグループを設定する
<a name="set-up-a-second-availability-group-on-aws"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS に WSFC を作成します。 | HA 用に 2 つのノードを備えた Amazon EC2 インスタンスに WSFC 2 を作成します。このフェールオーバークラスターを使用して、AWS に 2 つ目の可用性グループ (AG 2) を作成します。 | システム管理者、システム運用管理者 | 
| WSFC 2 に 2 つ目の可用性グループを作成します。 | SSMS を使用して、WSFC 2 の 2 つのノードに AG 2 を作成します。WSFC 2 の最初のノードがフォワーダーとして機能します。WSFC 2 の 2 番目のノードは AG 2 のセカンダリレプリカとして機能します。この段階では、AG 2 にはデータベースはありません。これが分散可用性グループの設定の出発点です。 | DBA、開発者 | 
| AG 2 で復旧オプションなしでデータベースを作成します。 | オンプレミス可用性グループ (AG 1) のデータベースをバックアップします。 復旧オプションなしで、AG 2 のフォワーダーとセカンダリレプリカの両方にデータベースを復元します。データベースを復元するときは、データベースデータファイルとログファイルを保存するのに十分なディスク容量がある場所を指定します。この段階では、データベースは復元中の状態です。これらは AG 2 または分散可用性グループには含まれておらず、同期も行われていません。 | DBA、開発者 | 

### 分散可用性グループの設定
<a name="configure-the-distributed-availability-group"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AG 1 に分散可用性グループを作成します。 | AG 1 に分散可用性グループを作成するには、`DISTRIBUTED`オプションを指定して`CREATE AVAILABILITY GROUP`を使用します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-sql-server-to-aws-using-distributed-availability-groups.html) | DBA、開発者 | 
| AG 2 に分散可用性グループを作成します。 | AG 2 に分散可用性グループを作成するには、`DISTRIBUTED`オプションを指定して`ALTER AVAILABILITY GROUP`を使用します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-sql-server-to-aws-using-distributed-availability-groups.html)分散可用性グループは AG 1 と AG 2 の間に作成されます。AG 2 のデータベースは、AG 1 から AG 2 へのデータフローに参加するようにまだ設定されていません。 | DBA、開発者 | 
| AG 2 のフォワーダーとセカンダリレプリカにデータベースを追加します。 | AG 2 のフォワーダーとセカンダリレプリカの両方で`SET HADR``AVAILABILITY GROUP`オプションを指定して`ALTER DATABASE`を使用して、データベースを分散可用性グループに追加します。 これにより、AG 1 と AG 2 のデータベース間の非同期データフローが開始されます。 グローバルプライマリは書き込みを行い、AG 1 のセカンダリレプリカにデータを同期的に送信し、AG 2 のフォワーダーにデータを非同期で送信します。AG 2 のフォワーダーは、AG 2 のセカンダリレプリカに同期的にデータを送信します。 | DBA、開発者 | 

### AG 1 と AG 2 間の非同期データフローを監視します。
<a name="monitor-asynchronous-data-flow-between-ag-1-and-ag-2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| DMV と SQL サーバーログを使用します。 | 動的管理ビュー (DMV) と SQL Server ログを使用して、2 つの可用性グループ間のデータフローの状態を監視します。 監視の対象となる DMV には、`sys.dm_hadr_availability_replica_states`と`sys.dm_hadr_automatic_seeding`があります。フォワーダー同期の状態については、フォワーダーの SQL Server ログで「*同期状態*」を監視します。 | DBA、開発者 | 

### 最終移行のためのカットオーバーアクティビティを実行
<a name="perform-cutover-activities-for-final-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| プライマリレプリカへのすべてのトラフィックを停止します。 | AG 1 のプライマリレプリカへの受信トラフィックを停止して、データベースへの書き込みアクティビティが発生せず、データベースを移行できる状態にします。 | アプリ所有者、開発者 | 
| AG 1 の分散可用性グループの可用性モードを変更します。 | プライマリレプリカで、分散可用性グループのアベイラビリティモードを同期に設定します。 アベイラビリティモードを同期に変更すると、データは AG 1 のプライマリレプリカから AG 2 のフォワーダーに同期的に送信されます。 | DBA、開発者 | 
| 両方の可用性グループの LSN を確認します。 | AG 1 と AG 2 の両方の最新のログシーケンス番号 (LSN) を確認します。AG 1 のプライマリレプリカでは書き込みが行われていないため、データは同期されており、両方の可用性グループの最後の LSN は一致しているはずです。 | DBA、開発者 | 
| AG 1 をセカンダリロールに更新します。 | AG 1 をセカンダリロールに更新すると、AG 1 はプライマリレプリカのロールを失い、書き込みを受け付けなくなり、2 つの可用性グループ間のデータフローが停止します。 | DBA、開発者 | 

### 2 番目の可用性グループへのフェイルオーバー
<a name="fail-over-to-the-second-availability-group"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AG 2 に手動でフェールオーバーします。 | AG 2 のフォワーダーで、データが失われないように分散可用性グループを変更します。AG 1 と AG 2 の最後の LSN が一致することは既に確認済みなので、データ損失は問題になりません。AG 2 のフォワーダでのデータ損失を許可すると、AG 1 と AG 2 の役割が変わります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-sql-server-to-aws-using-distributed-availability-groups.html) | DBA、開発者 | 
| AG 2 の分散可用性グループの可用性モードを変更します。 | AG 2 のプライマリレプリカで、アベイラビリティモードを非同期に変更します。これにより、AG 2 から AG 1 へのデータ移動が、同期から非同期に変更されます。このステップは、AG 2 と AG 1 の間でネットワーク遅延が発生してもそれを回避するために必要であり、データベースのパフォーマンスには影響しません。 | DBA、開発者 | 
| 新しいプライマリレプリカへのトラフィックの送信を開始します。 | AG 2 のリスナー URL エンドポイントを使用してデータベースにトラフィックを送信するように接続文字列を更新します。AG 2 は、AG 2 の独自のセカンダリレプリカにデータを送信するとともに、書き込みを受け付けて AG 1 のフォワーダーにデータを送信するようになりました。データは AG 2 から AG 1 に非同期的に移動します。 | アプリ所有者、開発者 | 

### カットオーバー後のアクティビティの実行
<a name="perform-post-cutover-activities"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 分散可用性グループを AG 2 にドロップします。 | 予定された時間だけ移行を監視します。次に、AG 2 に分散可用性グループをドロップして、AG 2 と AG 1 の間の分散可用性グループの設定を削除します。これにより、分散可用性グループの設定が削除され、AG 2 から AG 1 へのデータフローが停止します。 この時点で、AG 2 は AWS での可用性が高く、プライマリレプリカは書き込みを行い、セカンダリレプリカは同じ可用性グループ内にあります。 | DBA、開発者 | 
| オンプレミスサーバーを廃止します。 | AG 1 の一部である WSFC 1 のオンプレミスサーバーの使用を停止します。 | システム管理者、システム運用管理者 | 

## 関連リソース
<a name="migrate-sql-server-to-aws-using-distributed-availability-groups-resources"></a>
+ [分散可用性グループ](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/distributed-groups.html)
+ [SQL Docs： 分散可用性グループ](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-ver15)
+ [SQL Docs： Always On 可用性グループ：高可用性と災害復旧のためのソリューション](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/always-on-availability-groups-sql-server?view=sql-server-ver15)