次の方法で共有


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

適用対象: Azure SQL データベース

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

データベースごとにアクティブ geo レプリケーションが構成されています。 データベースのグループをフェールオーバーする場合、またはアプリケーションで安定した接続エンドポイントが必要な場合は、代わりにフェールオーバー グループを検討してください。

前提条件

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

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

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

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

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

Note

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

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

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

    [geo レプリケーションの構成] オプションを示すスクリーンショット。

  3. geo セカンダリ データベースのサブスクリプションリソリソース グループを選択します。

    サブスクリプションとリソース グループの Azure Portal のスクリーンショット。

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

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

  5. [確認と作成] を選択し、情報を確認し、[作成] を選びます。

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

    セカンダリ データベースのデプロイ状態を示すスクリーンショット。

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

    セカンダリ データベースのデプロイ後の状態を示すスクリーンショット。

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

    SQL データベースのプライマリと geo レプリカを示すスクリーンショット。

フェールオーバーの開始

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

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

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

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

    ドロップダウンからの強制フェールオーバーの選択を示すスクリーンショット。

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

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

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

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

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

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

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

  • 同じ Microsoft Entra テナントにあるプライマリのサブスクリプションとは異なるサブスクリプションで geo セカンダリ レプリカを作成するには、Azure Portal を使用するか、このセクションの手順に従います。
  • 別の Microsoft Entra テナントにあるプライマリのサブスクリプションとは異なるサブスクリプションで geo セカンダリ レプリカを作成するには、このセクションの手順通りに SQL 認証 と T-SQL を使用する必要があります。 論理サーバーが別の Azure テナントにある場合、サブスクリプション間 geo レプリケーションに対する Azure SQL の Microsoft Entra 認証はサポートされません
  1. このT-SQLコマンドを実行するクライアントマシンのIPアドレスを、プライマリサーバとセカンダリサーバの両方 のサーバファイアウォールに追加します。 この IP アドレスを確認するには、同じクライアントコンピューターからプライマリサーバーに接続しているときに、次のクエリを実行します。

    SELECT client_net_address
    FROM sys.dm_exec_connections
    WHERE session_id = @@SPID;
    

    詳細については、Azure SQL Database と Azure Synapse の IP ファイアウォール規則に関するページを参照してください。

  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 セカンダリが正常に作成されたら、この手順で作成したユーザー、ログイン、およびファイアウォールルールを削除できます。