チュートリアル: アクティブ geo レプリケーションとフェールオーバーを構成する (Azure SQL Database)

適用対象:Azure SQL Database

この記事では、Azure portal または Azure CLI を使用して Azure SQL Database のアクティブ geo レプリケーションを構成し、フェールオーバーを開始する方法について説明します。

自動フェールオーバーグループを使用する場合のベストプラクティスについては、「Azure SQL データベースでのフェールオーバーグループ」と「Azure SQL Managed Instance でのフェールオーバーグループ」を参照してください。

前提条件

このチュートリアルでは、アクティブ geo レプリケーション用にデータベースを構成する方法について説明します。 Azure portal、Azure CLI、Azure CLI (sql up)、または PowerShell を使用して単一データベースを作成する方法を確認するには、「クイック スタート: 単一データベースを作成する - Azure SQL Database」をご覧ください。

セカンダリ データベースの追加

次の手順では、geo レプリケーション パートナーシップに新しいセカンダリ データベースを作成します。

セカンダリ データベースを追加するには、サブスクリプションの所有者または共同所有者でなければなりません。

セカンダリ データベースは、プライマリ データベースと同じ名前となります。また、既定でのサービス レベルおよびコンピューティング サイズはプライマリ データベースと同じになります。 セカンダリ データベースは、単一データベースまたはプールされたデータベースとすることができます。 詳細については、DTU ベースの購入モデル仮想コアベースの購入モデルに関する記事を参照してください。 セカンダリ データベースを作成しシード処理を行うと、プライマリ データベースから新しいセカンダリ データベースへのデータのレプリケートが開始されます。

セカンダリ レプリカがディザスター リカバリー (DR) にのみ使用され、読み取りまたは書き込みワークロードがない場合は、新しいアクティブ geo レプリケーションリレーションシップを構成するときにデータベースをスタンバイに指定することで、ライセンス コストを節約できます。 詳細については、ライセンスフリー スタンバイ レプリカに関する説明を参照してください。

Note

パートナー データベースが既に存在する場合 (たとえば、前の geo レプリケーションのリレーションシップを終了した結果として)、コマンドは失敗します。

  1. Azure Portal で、geo レプリケーションについてセットアップするデータベースを参照します。

  2. [SQL Database] ページで、データベースを選択し、 [データ管理] までスクロールします。次に、 [レプリカ] を選択し、 [レプリカの作成] を選択します。

    Screenshot that shows the Configure geo-replication option.

  3. セカンダリ データベースのサーバーを選択または作成し、必要に応じて [コンピューティングとストレージ] オプションを構成します。 セカンダリ サーバーでは任意のリージョンを選択できますが、ペアのリージョンをお勧めします。

    Screenshot that shows the Create and configure replica screen.

    必要に応じて、以下のようにセカンダリ データベースをエラスティック プールに追加できます。 プールにセカンダリ データベースを作成するには、 [SQL エラスティック プールを使用しますか?] の横で [はい] を選択し、ターゲット サーバーのプールを選択します。 プールは、ターゲット サーバーに既に存在する必要があります。 このワークフローでは、プールを作成しません。

  4. [確認と作成] をクリックし、情報を確認してから、 [作成] をクリックします。

  5. セカンダリ データベースが作成され、デプロイ プロセスが始まります。

    Screenshot that shows the deployment status of the secondary database.

  6. デプロイが完了すると、セカンダリ データベースにその状態が表示されます。

    Screenshot that shows the secondary database status after deployment.

  7. プライマリ データベース ページに戻り、 [レプリカ] を選択します。 セカンダリ データベースが [Geo replicas](Geo レプリカ) の下に一覧表示されます。

    Screenshot that shows the SQL database primary and geo replicas.

フェールオーバーの開始

セカンダリ データベースは、プライマリ データベースとして使用するように切り替えることができます。

  1. Azure Portal で、geo レプリケーション パートナーシップのプライマリ データベースを参照します。

  2. [データ管理] までスクロールし、 [レプリカ] を選択します。

  3. [Geo replicas](Geo レプリカ) の一覧で、新しいプライマリとして使用するデータベースを選択し、省略記号を選択して、 [強制フェールオーバー] を選択します。

    Screenshot that shows selecting forced failover from the drop-down.

  4. [はい] を選択して、フェールオーバーを開始します。


このコマンドは、セカンダリ データベースをプライマリ ロールに即座に切り替えます。 このプロセスは、通常 30 秒以内に完了します。

ロールの切り替え中に、わずかですが両方のデータベースが使用できなくなる期間 (0 ~ 25 秒程度) が生じます。 プライマリ データベースに複数のセカンダリ データベースがある場合は、コマンドによって、新しいプライマリに接続するように他のセカンダリが自動的に再構成されます。 通常の状況では、操作全体が完了するのに 1 分かかりません。

セカンダリ データベースを削除する

この操作では、セカンダリ データベースへのレプリケーションを完全に停止し、セカンダリのロールを通常の読み取り/書き込みデータベースに変更します。 セカンダリ データベースへの接続が切断された場合、コマンドは成功しますが、接続が復元するまでセカンダリは読み取り/書き込み状態になりません。

  1. Azure Portal で、geo レプリケーション パートナーシップのプライマリ データベースを参照します。
  2. [レプリカ] を選択します。
  3. [Geo replicas](Geo レプリカ) の一覧で、geo レプリケーション パートナーシップから削除するデータベースを選択し、省略記号を選択して、 [レプリケーションの停止] を選択します。
  4. 確認ウィンドウが開きます。 [はい] をクリックして geo レプリケーション パートナーシップからデータベースを削除します。 (データベースを読み取り/書き込みデータベースに設定することは、レプリケーションの一部ではありません)。

サブスクリプション間 geo レプリケーション

Transact-SQL (T-SQL) を使用して、プライマリのサブスクリプションとは異なるサブスクリプションで geo セカンダリを作成します (同じ Microsoft Entra ID (旧称 Azure Active Directory) テナントであるかどうかにかかわらず)。このセクションの手順を実行します。

  1. このT-SQLコマンドを実行するクライアントマシンのIPアドレスを、プライマリサーバとセカンダリサーバの両方 のサーバファイアウォールに追加します。 この IP アドレスを確認するには、同じクライアントコンピューターからプライマリサーバーに接続しているときに、次のクエリを実行します。

    select client_net_address from sys.dm_exec_connections where session_id = @@SPID;
    

    詳細については、ファイアウォールの構成に関する記事を参照してください。

  2. プライマリ サーバーの master データベースで、アクティブ geo レプリケーションのセットアップ専用の SQL 認証ログインを作成します。 必要に応じて、ログイン名とパスワードを調整します。

    create login geodrsetup with password = 'ComplexPassword01';
    
  3. 同じデータベースで、ログイン用のユーザーを作成し、dbmanagerロールに追加し ます。

    create user geodrsetup for login geodrsetup;
    alter role dbmanager add member geodrsetup;
    
  4. 新しいログインの SID 値をメモしておきます。 次のクエリを使用して SID 値を取得します。

    select sid from sys.sql_logins where name = 'geodrsetup';
    
  5. (master データベースではなく) プライマリ データベースに接続し、同じログイン用のユーザーを作成します。

    create user geodrsetup for login geodrsetup;
    
  6. 同じデータベースで、ユーザーをdb_ownerロールに追加します。

    alter role db_owner add member geodrsetup;
    
  7. セカンダリ サーバーの master データベースで、同じ名前、パスワード、SID を使用して、プライマリ サーバーと同じログインを作成します。 次のサンプルコマンドの 16 進数の SID 値を、手順 4 で取得したものに置き換えます。

    create login geodrsetup with password = 'ComplexPassword01', sid=0x010600000000006400000000000000001C98F52B95D9C84BBBA8578FACE37C3E;
    
  8. 同じデータベースで、ログイン用のユーザーを作成し、dbmanagerロールに追加し ます。

    create user geodrsetup for login geodrsetup;
    alter role dbmanager add member geodrsetup;
    
  9. 新しい geodrsetup ログインを使用してプライマリ サーバー上の master データベースに接続し、セカンダリ サーバーで geo セカンダリの作成を開始します。 必要に応じて、データベース名とセカンダリサーバー名を調整します。 コマンドが実行されたら、プライマリ データベースの sys.dm_geo_replication_link_status ビューと、プライマリ サーバー上の master データベースの sys.dm_operation_status ビューのクエリを実行することで、geo セカンダリの作成を監視できます。 Geo セカンダリの作成に必要な時間は、プライマリデータベースのサイズによって異なります。

    alter database [dbrep] add secondary on server [servername];
    
  10. Geo セカンダリが正常に作成されたら、この手順で作成したユーザー、ログイン、およびファイアウォールルールを削除できます。

Note

セットアップと geo フェールオーバーを含むサブスクリプション間 geo レプリケーション操作は、REST API および T-SQL コマンドを使用する場合にのみサポートされます。

T-SQL を使用した geo セカンダリの追加は、プライベート エンドポイント経由でプライマリ サーバーに接続するときはサポートされません。 プライベート エンドポイントが構成されているが、パブリック ネットワーク アクセスが許可される場合、パブリック IP アドレスからプライマリ サーバーに接続するときに geo セカンダリの追加がサポートされます。 geo セカンダリを追加すると、パブリック ネットワーク アクセスを拒否できます。

プライマリまたはセカンダリのどちらかの論理サーバー上で、Microsoft Entra ID 専用認証が有効になっている場合、別の Microsoft Entra テナント内の論理サーバー上での geo セカンダリの作成はサポートされません。

次のステップ