SSMS でリンクを構成する - Azure SQL Managed Instance
適用対象: Azure SQL Managed Instance
この記事では、SQL Server Management Studio (SSMS) を使用して SQL Server と Azure SQL Managed Instance 間でリンクを構成する方法を説明します。 リンクを使用すると、初期プライマリのデータベースが準リアルタイムでセカンダリ レプリカにレプリケーションされます。
リンクが作成されたら、移行またはディザスター リカバリーのためにセカンダリ レプリカにフェールオーバーできます。
Note
- スクリプトを使用してリンクを構成することもできます。
- Azure SQL Managed Instance を初期プライマリとして構成することがサポートされるのは SQL Server 2022 CU10 以降です。
概要
リンク機能を使用して、最初のプライマリからセカンダリ レプリカにデータベースをレプリケーションします。 SQL Server 2022 の場合、初期プライマリは SQL Server または Azure SQL Managed Instance のいずれかになります。 SQL Server 2019 以前のバージョンの場合、初期プライマリは SQL Server である必要があります。 リンクが構成されると、初期プライマリのデータベースがセカンダリ レプリカにレプリケーションされます。
プライマリ レプリカとセカンダリ レプリカ間のハイブリッド環境での継続的なデータ レプリケーション用のリンクをそのままにするか、データベースをセカンダリ レプリカにフェールオーバーし、Azure に移行したり、ディザスター リカバリーを行ったりするかを選択できます。 SQL Server 2019 以前のバージョンでは、Azure SQL Managed Instance にフェールオーバーするとリンクが切断されます。フェールバックはサポートされていません。 SQL Server 2022 では、リンクを維持して 2 つのレプリカ間で双方向にフェールバックするオプションがあります。
セカンダリ マネージド インスタンスをディザスター リカバリーにのみ使用する場合は、ハイブリッド フェールオーバー特典をアクティブ化することで、ライセンス コストを節約できます。
この記事の手順を使用して、SQL Server と Azure SQL Managed Instance の間のリンクを手動で設定します。 リンクが作成されると、ソースのデータベースはターゲットのセカンダリ レプリカ上の読み取り専用コピーを取得します。
前提条件
リンクを通じてデータベースをセカンダリ レプリカにレプリケーションするには、次の前提条件を満たす必要があります。
- 有効な Azure サブスクリプション アカウントがない場合は、無料アカウントを作成してください。
- 必要なサービス更新プログラムがインストールされている SQL Server のサポート対象バージョン。
- Azure SQL Managed Instance。 ない場合はこれを開始します。
- SQL Server Management Studio v19.2 以降。
- 適切に準備された環境。
以下、具体例に沿って説明します。
- リンク機能では、リンクごとに 1 つのデータベースをサポートします。 1 つのインスタンスで複数のデータベースをレプリケーションするには、個々のデータベースごとにリンクを作成します。 たとえば、10 個のデータベースを SQL Managed Instance にレプリケートするには、10 個のリンクを作成します。
- 照合順序は、SQL Server と SQL Managed Instance 間で同じにする必要があります。 照合順序が一致していないとサーバー名の大文字と小文字が一致せず、SQL Server から SQL Managed Instance に正常に接続できません。
- 最初の SQL Server プライマリで発生するエラー 1475 は、
COPY ONLY
オプションを指定せずに完全バックアップを作成することで新しいバックアップ チェーンを開始する必要があることを示します。 - SQL Managed Instance から SQL Server 2022 へのリンクまたはフェールオーバーを確立するには、SQL Server 2022 更新ポリシーを使用して Managed Instance を構成する必要があります。 SQL Managed Instance から SQL Server 2022 へのデータ レプリケーションとフェールオーバーは、Always-up-to-date 更新ポリシーを使用して構成されたインスタンスではサポートされていません。
- SQL Server 2022 から Always-up-to-date 更新ポリシーを使用して構成された SQL Managed Instance へのリンクを確立できますが、SQL Managed Instance にフェールオーバーした後は、データをレプリケートしたり、SQL Server 2022 にフェールバックしたりできなくなります。
アクセス許可
SQL Server の場合、sysadmin アクセス許可が必要です。
Azure SQL Managed Instance の場合、SQL Managed Instance 共同作成者のメンバーであるか、次のカスタム ロールのアクセス許可を持っている必要があります。
Microsoft.Sql/ リソース | 必要なアクセス許可 |
---|---|
Microsoft.Sql/managedInstances | /read、/write |
Microsoft.Sql/managedInstances/hybridCertificate | /action |
Microsoft.Sql/managedInstances/databases | /read、/delete、/write、/completeRestore/action、/readBackups/action、/restoreDetails/read |
Microsoft.Sql/managedInstances/distributedAvailabilityGroups | /read、/write、/delete、/setRole/action |
Microsoft.Sql/managedInstances/endpointCertificates | /read |
Microsoft.Sql/managedInstances/hybridLink | /read、/write、/delete |
Microsoft.Sql/managedInstances/serverTrustCertificates | /write、/delete、/read |
データベースを準備する
SQL Server が最初のプライマリである場合は、データベースのバックアップを作成する必要があります。 Azure SQL Managed Instance はバックアップを自動的に取得するため、SQL Managed Instance が初期プライマリである場合は、この手順をスキップします。
SSMS を使用して SQL Server 上のデータベースをバックアップします。 次のステップを実行します。
- SQL Server Management Studio (SSMS) で SQL Server に接続します。
- オブジェクト エクスプローラーで、データベースを右クリックし、[タスク] の上にカーソルを置き、[バックアップ] を選択します。
- バックアップの種類として [完全] を選択します。
- [バックアップ先] オプションに、十分な空き記憶域を使用できるディスクへのバックアップ パスが設定されていることを確認します。
- [OK] を選択して完全バックアップを完了します。
詳細については、「フル データベース バックアップの作成」を参照してください。
Note
このリンクでは、ユーザー データベースのレプリケーションのみをサポートしています。 システム データベースのレプリケーションはサポートされていません。 (master
または msdb
に格納されている) インスタンス レベルのオブジェクトをレプリケーションするには、それらのスクリプトを作成し、レプリケーション先のインスタンスで T-SQL スクリプトを実行します。
データベースをレプリケーションするためのリンクを作成する
次の手順では、SSMS の新しい Managed Instance リンク ウィザードを使用して最初のプライマリとセカンダリ レプリカとの間のリンクを作成します。
リンクを作成すると、ソースのデータベースはターゲットのセカンダリ レプリカ上の読み取り専用コピーを取得します。
SSMS を開き、最初のプライマリに接続します。
オブジェクト エクスプローラーで、セカンダリにリンクさせるデータベースを右クリックし、Azure SQL Managed Instance のリンクをポイントし、[新規…] を選択して [新しいマネージド インスタンスのリンク] ウィザードを開きます。 お使いの SQL Server バージョンではサポートされていない場合、このオプションはコンテキスト メニューで使用できません。
ウィザードの [概要] ページで [次へ] を選択します。
[リンク オプションの指定] ページで、リンクの名前を指定します。複数のデータベースを選択すると、指定した名前の末尾にデータベース名が自動的に追加されるため、自分で含める必要はありません。 接続のトラブルシューティングを有効にする場合、および SQL Server 2022 でリンクを双方向ディザスター リカバリーに使用する場合は、チェック ボックスをオンにします。 [次へ] を選択します。
[要件] ページで、ウィザードが要件を検証し、セカンダリへのリンクを確立します。 すべての要件が検証されたら [次へ] を選択します。または、満たされていない要件を解決して、[検証の再実行] を選択します。
[データベースの選択] ページで、リンクを使用してセカンダリ レプリカにレプリケーションするデータベースを選択します。 複数のデータベースを選択すると、リンクごとに 1 つずつ、複数の分散型可用性グループが作成されます。 [次へ] を選択します。
[セカンダリ レプリカの指定] ページで、[セカンダリ レプリカの追加] を選択します。 最初のプライマリが SQL Server の場合は、[Azure へのサインイン] ウィンドウが開きます。 初期プライマリが SQL Managed Instance の場合、[サーバーへの接続] ダイアログ ボックスが開きます。
- SQL Server の初期プライマリの場合は、Azure にサインインし、ドロップダウンからサブスクリプション、リソース グループ、およびセカンダリ SQL Server マネージド インスタンスを選択します。 [ログイン] を選択して [サーバーへの接続] ダイアログ ボックスを開き、データベースをレプリケーションする SQL Managed Instance に接続します。 [サインイン] ウィンドウに「ログインに成功しました」と表示されたら、[OK] を選択してウィンドウを閉じ、新しい Managed Instance リンク ウィザードに戻ります。
- SQL Managed Instance の初期プライマリの場合は、データベースをレプリケーションする SQL Server インスタンスに接続します。
Note
既に存在する可用性グループへのリンクを確立する場合は、[セカンダリ レプリカの指定] ページの [エンドポイント] タブにある [エンドポイント URL] フィールドに、既存のリスナーの IP アドレスを指定します。
カンダリ レプリカを追加した後、必要に応じてウィザードのタブを使用してエンドポイント設定を変更し、バックアップとリンク エンドポイントに関する情報を他のタブで確認します。 続行する準備ができたら、[次へ] を選択します。
SQL Managed Instance が最初のプライマリである場合、ウィザードの次のページは [Azure へのログイン] ページです。 必要に応じてもう一度サインインし、[次へ] を選択します。 このページは、SQL Server が最初のプライマリである場合は使用できません。
[検証] ページで、すべての検証が成功していることを確認します。 失敗した場合は、それらを解決してから、検証を再実行します。 準備ができたら、[次へ] を選択します。
[概要] ページで、構成をもう一度確認します。 必要に応じて、[スクリプト] を選択してスクリプトを生成し、後で同じリンクを簡単に再作成できるようにします。 リンクを作成する準備ができたら、[完了] を選択します。
[アクションの実行] ページには、各アクションの進行状況が表示されます。
すべての手順が完了すると、[結果] ページで、正常に完了したアクションの横にチェック マークが表示されます。 これで、ウィンドウを終了できます。
レプリケートされたデータベースを表示する
リンクが作成されると、データベースがセカンダリ レプリカにレプリケーションされます。 データベースのサイズとネットワーク速度によっては、セカンダリ レプリカ上のデータベースの最初の状態が [復元中] になっていることがあります。 最初のシード処理が終了すると、データベースはセカンダリ レプリカに復元され、読み取り専用ワークロードの準備が完了します。
どちらのレプリカでも、SSMS のオブジェクト エクスプローラーを使用すると、レプリケーションされたデータベースの同期状態を表示できます。
[Always On 高可用性] と [Availability Groups] (可用性グループ) を展開して、各リンク用に作成された分散型可用性グループを表示します。
どのインスタンスがプライマリであるかにかかわらず、SQL Server でリンクされた分散型可用性グループを右クリックし、[ダッシュボードの表示] を選択して、分散型可用性グループのダッシュボードを表示することもできます。このダッシュボードには、分散型可用性グループ内のリンクされたデータベースの状態が表示されます。
最初のトランザクション ログ バックアップを実行する
SQL Server が初期プライマリである場合は、初期シード処理が完了した後、つまり Azure SQL Managed Instance 上のデータベースが "復元中..." の状態でなくなったときに、SQL Sever で最初のトランザクション ログ バックアップを実行することが重要です。 その後、SQL Server トランザクション ログ バックアップを定期的に実行し、SQL Server がプライマリ ロールにあるときの過剰なログの増加を最小限に抑えます。
SQL Managed Instance がプライマリである場合は、Azure SQL Managed Instance がログ バックアップを自動的に実行するため、何も行う必要はありません。
リンクを削除する
リンクが不要になった、または回復不可能な状態で再作成する必要があるために、リンクを削除する場合は、SQL Server Management Studio (SSMS) を使用して削除できます。
インスタンスに接続後、SSMS の [オブジェクト エクスプローラー] にある次のメニュー オプションからリンクを削除できます。
- [Always On 可用性グループ]>[可用性グループ]> リンクに関連付けられている分散型可用性グループ名を右クリック >[削除...]
- [データベース]> リンクに関連付けられているデータベースを右クリック >Azure SQL Managed Instance リンク>[削除...]
トラブルシューティング
リンクの作成時にエラー メッセージが表示された場合は、エラーを選択して、エラーに関する詳細を表示するウィンドウを開きます。
リンクの操作中にエラーが発生した場合、SSMS ウィザードは失敗した段階で実行を停止し、再度再起動することはできません。 この問題に対処し、必要に応じて、分散型高可用性グループおよび可用性グループ (リンクの設定時に作成された場合) を削除して元の状態に戻すことで環境をクリーンアップします。 次に、ウィザードをもう一度起動して最初からやり直します。
関連するコンテンツ
リンクを使用するには、次を参照してください。
- Managed Instance リンク用に環境を準備する
- スクリプトを使用して SQL Server と SQL Managed Instance の間のリンクを構成する
- リンクをフェールオーバーする
- リンクを使用して移行する
- リンクを維持するためのベスト プラクティス
リンクの詳細については、次を参照してください。
他のレプリケーション シナリオについては、以下を検討してください。