Azure SQL Database を可用性ゾーンのサポートに移行する
このガイドでは、Azure SQL Database を非可用性ゾーンのサポートから可用性のサポートに移行する方法について説明します。
Azure SQL Database のゾーン冗長を有効にすると、データベースが Azure Availability Zones を利用して Azure リージョン内の複数の物理的な場所全体にデータをレプリケートするため、高可用性が保証されます。 ゾーン冗長を選択することにより、アプリケーション ロジックを変更することなく、データセンターの壊滅的な障害など、大規模な障害に対するデータベースとエラスティック プールの回復性を高めることができます。
前提条件
可用性ゾーンのサポートに移行する前に、次の表を参照して、Azure SQL Database が、サポートされているサービス レベルとデプロイ モデルにあることを確認してください。 可用性ゾーンをサポートするリージョンで、レベルとモデルが提供されていることを確認します。
サービス レベル | デプロイメント モデル | ゾーン冗長の可用性 |
---|---|---|
Premium | 単一のデータベースまたはエラスティック プール | 可用性ゾーンをサポートしているすべてのリージョン |
Business Critical | 単一のデータベースまたはエラスティック プール | 可用性ゾーンをサポートしているすべてのリージョン |
General Purpose | 単一のデータベースまたはエラスティック プール | 可用性ゾーンをサポートしている選択されたリージョン |
Hyperscale | 単一データベース | 可用性ゾーンをサポートしているすべてのリージョン |
ダウンタイムの要件
Premium、Business Critical、General Purpose サービス レベルの移行はオンライン操作であり、移行プロセスを完了するために最後の方で短時間切断されます。 標準の一時的なエラーのための再試行ロジックを実装している場合、フェールオーバーに気付くことはありません。
Hyperscale サービス レベルの場合、ゾーン冗長のサポートはデータベースの作成時にのみ指定でき、リソースがプロビジョニングされた後は変更できません。 可用性ゾーンのサポートに移行する場合は、データベースのコピー、ポイントインタイム リストア、または geo レプリカを使用してデータを転送する必要があります。 ターゲット データベースがソースとは異なるリージョンにある場合、またはターゲットのデータベース バックアップ ストレージの冗長性がソース データベースと異なる場合、ダウンタイムは、データ操作のサイズに比例します。
移行 (Premium、Business Critical、General Purpose)
Premium、Business Critical、General Purpose サービス レベルでは、ゾーン冗長への移行が可能です。
単一データベースまたはエラスティック プールの移行を実行するには、次の手順に従います。
単一データベースを移行する
Azure portal に移動して、データベースを見つけます。 SQL データベースを検索して選択します。
移行するデータベースを選択します。
[設定] で、[コンピューティングとストレージ] を選択します。
[このデータベース ゾーンに冗長性を持たせますか?] に [はい] を選択します。
適用を選択します。
Azure portal の上部メニューにある [通知] で操作完了通知を受け取るのを待ちます。
ゾーン冗長が有効になっていることを確認するには、[概要] を選択し、[プロパティ] を選択します。
[可用性] セクションで、ゾーン冗長が [有効] に設定されていることを確認します。
エラスティック プールの移行
重要
エラスティック プールのゾーン冗長のサポートを有効にすると、プール ゾーン内のすべてのデータベースが冗長になります。
Azure portal に移動して、移行するエラスティック プールを見つけて選択します。
[設定] を選んでから、[構成] を選びます。
[このエラスティック プール ゾーンに冗長性を持たせますか?] に [はい] を選択します。
[保存] を選択します。
Azure portal の上部メニューにある [通知] で操作完了通知を受け取るのを待ちます。
ゾーン冗長が有効になっていることを確認するには、[構成] を選択し、[プールの設定] を選択します。
ゾーン冗長オプションは、[はい] に設定する必要があります。
再デプロイ (Hyperscale)
Hyperscale サービス レベルの場合、ゾーン冗長のサポートはデータベースの作成時にのみ指定でき、データベースがプロビジョニングされた後は変更できません。 ゾーン冗長のサポートを受ける場合は、既存の Hyperscale サービス レベルの単一データベースからデータ転送を実行する必要があります。 転送を実行して、ゾーン冗長オプションを有効にするには、データベース コピー、ポイントインタイム リストア、または geo レプリカを使用してクローンを作成する必要があります。
再デプロイに関する考慮事項
再デプロイには、2 つのモードがあります (オンラインとオフライン):
データベース コピーおよびポイントインタイム リストアの方法 (オフライン モード) では、特定の時点でトランザクション上一貫性のあるデータベースを作成できます。 その結果、コピーまたは復元操作が開始された後に実行されたデータ変更は、コピーまたは復元されたデータベースでは使用できません。
geo レプリカの方法 (オンライン モード) は、ソースのデータ変更がターゲットに同期される再デプロイです。
アプリケーションの接続文字列は、ゾーン冗長データベースを指すよう更新する必要があります。
単一データベースの再デプロイ
データベース コピー
Azure portal、PowerShell、または Azure CLI を使用してデータベース コピーを作成し、ゾーン冗長を有効にするには、Azure SQL Database でのトランザクション上一貫性のあるデータベースのコピーのコピーに関する記事の手順に従います。
ポイントインタイム リストア
Azure portal、PowerShell、または Azure CLI を使用してポイントインタイム データベース復元を作成し、ゾーン冗長を有効にするには、ポイントインタイム リストアに関する記事の手順に従います。
geo レプリカ
データベースの geo レプリカを作成するには:
「アクティブ geo レプリケーションとフェールオーバーを構成する (Azure SQL Database)」の Azure portal、PowerShell、または Azure CLI の手順に従って、[コンピューティングとストレージ] でゾーン冗長を有効にします。
レプリカがシード処理され、データのシード処理にかかる時間は、ソース データベースのサイズによって異なります。 Azure portal でシード処理の状態を監視するか、レプリカ データベースで次の TSQL クエリを実行して監視できます。
SELECT * FROM sys.dm_geo_replication_link_status; SELECT * FROM sys.dm_operation_status;
データベースのシード処理が完了したら、計画された (データ損失なし) フェールオーバーを実行して、ゾーン冗長ターゲット データベースをプライマリにします。 sys.dm_geo_replication_link_status を使用して、geo レプリケーション状態のステータスを表示します。 セカンダリ データベースがトランザクション一貫性のある状態になってる場合、
replication_state_desc
はCATCH_UP
です。 sys.dm_operation_status 動的管理ビューで、シード処理操作が完了したときにCOMPLETED
になるstate_desc
を探します。新しいゾーン冗長データベースを反映するように、アプリケーションの接続文字列内のサーバー名を更新します。
クリーンアップするには、geo レプリカ リレーションシップから元の非ゾーン冗長データベースを削除することを検討してください。 削除することも選択できます。
ゾーン冗長を無効にする
単一データベースまたはエラスティック プールのゾーン冗長を無効にするには、ポータルまたは ARM API を使用できます。
Hyperscale サービス レベルのゾーン冗長を無効にするには、再デプロイ (Hyperscale) に関する記事に記載されている手順を逆にすることができます。
Azure portal でゾーン冗長を無効にするには:
Azure portal に移動して、ゾーン冗長を解除するエラスティック プールを見つけて選択します。
[設定] を選んでから、[構成] を選びます。
[このエラスティック プール ゾーンに冗長性を持たせますか?] に [いいえ] を選択します。
[保存] を選択します。
PowerShell を使用してゾーン冗長を無効にするには:
Set-AzSqlElasticpool -ResourceGroupName "RSETLEM-AzureSQLDB" -ServerName "rs-az-testserver1" -ElasticPoolName "testep10" -ZoneRedundant:$false
Azure CLI を使用してゾーン冗長を無効にするには:
az sql elastic-pool update --resource-group "RSETLEM-AzureSQLDB" --server "rs-az-testserver1" --name "testep10" --zone-redundant false
ARM を使ってゾーン冗長を無効にするには、データベース - ARM での作成または更新に関する記事を参照し、properties.zoneRedundant
プロパティを使用します。