チュートリアル: アクティブ geo レプリケーションとフェールオーバーを構成する (Azure SQL Database)
適用対象: Azure SQL データベース
この記事では、Azure Portal、PowerShell、Azure CLI を使用して Azure SQL データベースにアクティブ geo レプリケーションを構成してフェールオーバーを開始する方法について説明します。
データベースごとにアクティブ geo レプリケーションが構成されています。 データベースのグループをフェールオーバーする場合、またはアプリケーションで安定した接続エンドポイントが必要な場合は、代わりにフェールオーバー グループを検討してください。
前提条件
このチュートリアルを完了するには、単一の Azure SQL データベースが必要です。 Azure portal、Azure CLI、または PowerShell を使用して単一データベースを作成する方法を確認するには、「クイック スタート: 単一データベースを作成する - Azure SQL データベース」をご覧ください。
両方のサブスクリプションが同じ Microsoft Entra ID テナントにある限り、Azure Portal を使用してサブスクリプション間でアクティブ geo レプリケーションを設定できます。
- 異なる Microsoft Entra ID テナントのプライマリのサブスクリプションとは異なるサブスクリプションに geo セカンダリ レプリカを作成するには、サブスクリプション間の geo セカンダリと Microsoft Entra ID テナント T-SQL チュートリアルを使用します。
- セットアップと geo フェールオーバーを含むサブスクリプション間 geo レプリケーション操作は、データベース作成または更新 REST API を使用するときもサポートされます。
セカンダリ データベースの追加
次の手順では、geo レプリケーション パートナーシップに新しいセカンダリ データベースを作成します。
セカンダリ データベースを追加するには、サブスクリプションの所有者または共同所有者でなければなりません。
セカンダリ データベースは、プライマリ データベースと同じ名前となります。また、既定でのサービス レベルおよびコンピューティング サイズはプライマリ データベースと同じになります。 セカンダリ データベースは、単一データベースまたはプールされたデータベースとすることができます。 詳細については、DTU ベースの購入モデルの概要と仮想コアベースの購入モデルに関するページを参照してください。 セカンダリ データベースを作成しシード処理を行うと、プライマリ データベースから新しいセカンダリ データベースへのデータのレプリケートが開始されます。
セカンダリ レプリカがディザスター リカバリー (DR) にのみ使用され、読み取りまたは書き込みワークロードがない場合は、新しいアクティブ geo レプリケーションリレーションシップを構成するときにデータベースをスタンバイに指定することで、ライセンス コストを節約できます。 詳細については、「license-free スタンバイ レプリカ」を参照してください。
Note
パートナー データベースが既に存在する場合 (たとえば、前の geo レプリケーションのリレーションシップを終了した結果として)、コマンドは失敗します。
Azure Portal で、geo レプリケーションについてセットアップするデータベースを参照します。
[SQL Database] ページで、データベースを選択し、 [データ管理] までスクロールします。次に、 [レプリカ] を選択し、 [レプリカの作成] を選択します。
geo セカンダリ データベースのサブスクリプションとリソリソース グループを選択します。
セカンダリ データベースのサーバーを選択または作成し、必要に応じて [コンピューティングとストレージ] オプションを構成します。 セカンダリ サーバーでは任意のリージョンを選択できますが、ペアのリージョンをお勧めします。
必要に応じて、以下のようにセカンダリ データベースをエラスティック プールに追加できます。 プールにセカンダリ データベースを作成するには、 [SQL エラスティック プールを使用しますか?] の横で [はい] を選択し、ターゲット サーバーのプールを選択します。 プールは、ターゲット サーバーに既に存在する必要があります。 このワークフローでは、プールを作成しません。
[確認と作成] を選択し、情報を確認し、[作成] を選びます。
セカンダリ データベースが作成され、デプロイ プロセスが始まります。
デプロイが完了すると、セカンダリ データベースにその状態が表示されます。
プライマリ データベース ページに戻り、 [レプリカ] を選択します。 セカンダリ データベースが [Geo replicas](Geo レプリカ) の下に一覧表示されます。
フェールオーバーの開始
セカンダリ データベースは、プライマリ データベースとして使用するように切り替えることができます。
Azure Portal で、geo レプリケーション パートナーシップのプライマリ データベースを参照します。
[データ管理] までスクロールし、 [レプリカ] を選択します。
[Geo replicas](Geo レプリカ) の一覧で、新しいプライマリとして使用するデータベースを選択し、省略記号を選択して、 [強制フェールオーバー] を選択します。
[はい] を選択して、フェールオーバーを開始します。
このコマンドは、セカンダリ データベースをプライマリ ロールに即座に切り替えます。 このプロセスは、通常 30 秒以内に完了します。
両方のデータベースは、ロールが切り替えられる間、最大 25 秒間使用できません。 プライマリ データベースに複数のセカンダリ データベースがある場合は、コマンドによって、新しいプライマリに接続するように他のセカンダリが自動的に再構成されます。 通常の状況では、操作全体が完了するのに 1 分かかりません。
セカンダリ データベースを削除する
この操作では、セカンダリ データベースへのレプリケーションを完全に停止し、セカンダリのロールを通常の読み取り/書き込みデータベースに変更します。 セカンダリ データベースへの接続が切断された場合、コマンドは成功しますが、接続が復元するまでセカンダリは読み取り/書き込み状態になりません。
- Azure Portal で、geo レプリケーション パートナーシップのプライマリ データベースを参照します。
- [レプリカ] を選択します。
- [Geo replicas](Geo レプリカ) の一覧で、geo レプリケーション パートナーシップから削除するデータベースを選択し、省略記号を選択して、 [レプリケーションの停止] を選択します。
- 確認ウィンドウが開きます。 [はい] を選択して geo レプリケーション パートナーシップからデータベースを削除します。 (レプリケーションの一部ではない読み取り/書き込みデータベースに設定します)。
サブスクリプション間 geo レプリケーション
- 同じ Microsoft Entra テナントにあるプライマリのサブスクリプションとは異なるサブスクリプションで geo セカンダリ レプリカを作成するには、Azure Portal を使用するか、このセクションの手順に従います。
- 別の Microsoft Entra テナントにあるプライマリのサブスクリプションとは異なるサブスクリプションで geo セカンダリ レプリカを作成するには、このセクションの手順通りに SQL 認証 と T-SQL を使用する必要があります。 論理サーバーが別の Azure テナントにある場合、サブスクリプション間 geo レプリケーションに対する Azure SQL の Microsoft Entra 認証はサポートされません
このT-SQLコマンドを実行するクライアントマシンのIPアドレスを、プライマリサーバとセカンダリサーバの両方 のサーバファイアウォールに追加します。 この IP アドレスを確認するには、同じクライアントコンピューターからプライマリサーバーに接続しているときに、次のクエリを実行します。
SELECT client_net_address FROM sys.dm_exec_connections WHERE session_id = @@SPID;
詳細については、Azure SQL Database と Azure Synapse の IP ファイアウォール規則に関するページを参照してください。
プライマリ サーバーの
master
データベースで、アクティブ geo レプリケーションのセットアップ専用の SQL 認証ログインを作成します。 必要に応じて、ログイン名とパスワードを調整します。CREATE LOGIN geodrsetup WITH PASSWORD = 'ComplexPassword01';
同じデータベースで、ログイン用のユーザーを作成し、
dbmanager
ロールに追加し ます。CREATE USER geodrsetup FOR LOGIN geodrsetup; ALTER ROLE dbmanager ADD MEMBER geodrsetup;
新しいログインの SID 値をメモしておきます。 次のクエリを使用して SID 値を取得します。
SELECT sid FROM sys.sql_logins WHERE name = 'geodrsetup';
(
master
データベースではなく) プライマリ データベースに接続し、同じログイン用のユーザーを作成します。CREATE USER geodrsetup FOR LOGIN geodrsetup;
同じデータベースで、ユーザーを
db_owner
ロールに追加します。ALTER ROLE db_owner ADD MEMBER geodrsetup;
セカンダリ サーバーの
master
データベースで、同じ名前、パスワード、SID を使用して、プライマリ サーバーと同じログインを作成します。 次のサンプルコマンドの 16 進数の SID 値を、手順 4 で取得したものに置き換えます。CREATE LOGIN geodrsetup WITH PASSWORD = 'ComplexPassword01', SID = 0x010600000000006400000000000000001C98F52B95D9C84BBBA8578FACE37C3E;
同じデータベースで、ログイン用のユーザーを作成し、
dbmanager
ロールに追加し ます。CREATE USER geodrsetup FOR LOGIN geodrsetup; ALTER ROLE dbmanager ADD MEMBER geodrsetup;
新しい
geodrsetup
ログインを使用してプライマリ サーバー上のmaster
データベースに接続し、セカンダリ サーバーで geo セカンダリの作成を開始します。 必要に応じて、データベース名とセカンダリサーバー名を調整します。 コマンドが実行されたら、プライマリ データベースの sys.dm_geo_replication_link_status ビューと、プライマリ サーバー上のmaster
データベースの sys.dm_operation_status ビューのクエリを実行することで、geo セカンダリの作成を監視できます。 Geo セカンダリの作成に必要な時間は、プライマリデータベースのサイズによって異なります。alter database [dbrep] add secondary on server [servername];
Geo セカンダリが正常に作成されたら、この手順で作成したユーザー、ログイン、およびファイアウォールルールを削除できます。