NEWSニュース&ブログ

【Azure SQL Managed Instance】Managed Instanceリンクを使ってオンライン移行の検証をしてみた②

投稿日:2025/02/03

はじめに

 前回はManaged Instanceリンク機能についての概要と事前準備およびSQL ServerとAzure SQL Managed Instance間の接続テストを行いました。今回は実際に本機能を利用してみます。

Managed Instance リンクの作成

 機能を利用したいデータベースを右クリックし、[Azure SQL Managed Instance link] > [Replicate database]を選択します。

 まずはじめに前提条件のチェックが行われますが、NG項目が存在します…。

 今回用意したSQL Serverの環境は「SQL Server 2016 SP3」でしたが、Azure connect packが存在しないため引っ掛かっているようです。
 こちらから対象となる更新プログラムをダウンロードしてSQL Serverに適用したところ、問題なく次に進むことができました。

 次に対象となるデータベースを選択します。
 既に対応済みではありますが、事前に復旧モデルを「完全復旧」にし、一度フルバックアップを取得する必要があります。

 続いてAzureにサインインします。
 サインインが完了すると、サブスクリプションやリソースグループ、リソースグループ内に作成されているAzure SQL Managed Instanceが表示されます。対象となるAzure SQL Managed Instanceを選択し、ログインを終えたら次に進みましょう。

 最後に、機能を利用するために必要なエンドポイントや資格情報などが表示されます。

 今回は一時的な移行に利用する想定なので、そのまま進めます。

 サマリが表示されるので問題ないかを確認し、Managed Instanceリンク作成に移ります。

 リンクの作成が終わると、Azure SQL Managed Instanceにレプリケーション対象のデータベースが作成されていることが確認できますね。

同期の確認

 実際にほぼリアルタイムの同期ができるのかを確認してみましょう。
 SQL Serverにテスト用のテーブルを作成し、データを挿入します。

select @@SERVERNAME;
create table test(id int);
insert into test values(1);
select * from test;


 次にAzure SQL Managed Instanceでレプリケートされているはずのオブジェクト名を指定してSELECTすると、同じ結果が得られることがわかりますね。

select @@SERVERNAME;
select * from test;


 次に、複数のデータを挿入した場合はどうなるのでしょうか。SQL Serverで100件のデータを挿入してみます。

select @@SERVERNAME;
insert into test values(2)
go 100;
select count(*) from test;

 100件程度であれば、すぐに更新が追いついていることが確認できますね。

移行作業終了後の対応

 SQL ServerからAzure SQL Managed Instanceへのデータの同期が終了した後は、任意のタイミングでManaged Instanceリンクを削除することになると思います。

 削除方法は作成時と同様に、機能を利用していたデータベースを右クリックし、[Azure SQL Managed Instance link] > [Failover database]を選択します。

 対象のデータベース名が表示されるので、確認を行います。

 Azureへのサインインを行います。

 フェールオーバーの方法として、[計画的な手動フェールオーバー]または[データ損失を伴う強制的な手動フェールオーバー]のいずれかを選択できます。

 前者はデータベース内のすべてのデータが維持され、後者はデータ損失を伴うフェールオーバーを強制的に実行します。緊急性が高くない限りデータ損失は許容されないと思われるため、[計画的な手動フェールオーバー]を選択します。

 最後に可用性グループの扱いを選択します。
 今回の検証は移行を目的としているので、フェールオーバー後には削除することとします。

 サマリが表示されるので問題ないかを確認し、Managed Instanceリンク削除に移ります。

 「Ensure Log Sequence Numbers(LSNs)are sync」の注意マークが表示されていますが、データの同期が完了していることや更新が入っていないため、attempt 1 of 3で全てチェックが終了し、Skip扱いされているようです。

まとめ

 今回はManaged Instanceリンク機能を利用してデータのレプリケーションを設定する手順について説明しました。前回の準備を踏まえ、実際にリンクを作成し、同期の確認を行うことで、本機能の全体像が大まかではありますが把握できました。

 今後、SQL ServerとAzure SQL Managed Instanceの連携を検討している方々にとって、このブログが一助となれば嬉しいです。
 また、SQL Serverに関するパフォーマンスチューニングやデータ移行でお悩み事があればお気軽にお問い合わせください。

中川 智文(2022年入社)
株式会社システムサポート フューチャーイノベーション事業本部 ソリューションサービス事業部所属
Oracle Database, SQL Serverを中心とした案件に従事