データベースをコピーまたは移動する - Azure SQL Managed Instance
適用対象: Azure SQL Managed Instance
この記事では、Azure SQL Managed Instance のインスタンス間でデータベースのオンライン コピーまたは移動を行う方法について説明します。 データベースのコピー操作と移動操作は、同じ Azure テナント内の異なる Azure サブスクリプション間でサポートされます。
概要
Always On 可用性グループ テクノロジを使って、Managed Instance 間でデータベースのオンライン コピーまたは移動操作を実行できます。 コピーと移動の機能を使うと、ソース データベースのコピーである新しいデータベースを、宛先インスタンスに作成することができます。 この機能を使ったデータ レプリケーションは、信頼性が高く、継続的、非同期、かつ準リアルタイムです。
データベースを "コピー" するときは、操作の最中も完了後も、ソース データベースはオンラインのままです。
データベースを "移動する" ときは、逆に、操作の完了後にソース データベースはドロップされます。
データベースのコピーと移動の操作は、ソース マネージド インスタンスから 1 つ以上のターゲット インスタンスに対して複数実行できます。
ポイントインタイム リストア (PITR) は操作の完了後にデータベースのコピーが作成されるという点で、データベースのコピーと移動とは異なります。 PITR を使うと、過去の指定した時点のデータベースのコピーが作成されます。
重要
データベースを新しい宛先に移動すると、既存の PITR バックアップはそのデータベースと共に移動せず、使用できなくなります。 移動操作が完了した時点で、宛先インスタンスでデータベースの新しいバックアップ チェーンが開始されます。
この機能を使うタイミング
データベースの移動またはコピーは、次のような場合に役立ちます。
- データベースの拡張とパフォーマンスの要件を管理する。
- 複数の Managed Instance 間でワークロードのバランスを取る。
- ワークロードを処理するために、より多くのリソースが使用可能なインスタンスにデータベースを移動する。
- 複数のインスタンスから複数のデータベースを統合する。
- 開発、テスト、運用の環境の間でデータベース パリティを作成する。
ワークフロー
データベースのコピーまたは移動のワークフローを次に示します。
データベース、ソース マネージド インスタンス、宛先インスタンスを選んでから、操作を開始します。
データベースが宛先サーバーにシード処理されます。 状態を確認して、操作が進行中か、成功したかを確認します。
シード処理が完了すると、操作の状態は "完了の準備完了" と表示されます。
手動で操作が完了するまでに、ソース データベースに発生したすべての変更が宛先データベースに適用されます。 操作はいつでも取り消すことができます。 24 時間以内に操作を明示的に完了してください。 24 時間以内に完了しないと、操作は自動的に取り消され、宛先データベースはドロップされます。
手動で操作を完了したら、宛先データベースがオンラインになり、読み取り/書き込みワークロードに対する準備が整います。
データベースの移動を選択した場合、ソース データベースは削除されます。 データベースのコピーを選択した場合、ソース データベースはオンラインのままですが、データ同期は停止します。
移動操作のワークフロー例を次の図に示します。
データベース移動操作の設計により、データ損失がないことを保証します。 ユーザーが移動操作を完了すると、ソース データベースはワークロードの受け入れを停止し、トランザクションは移行先データベースにレプリケートされます。 その場合にのみ、移行先データベースがオンラインになり、ソース データベースが削除されます。 この設計により、ソース データベースのすべてのデータが コピー先データベースに確実に移動されます。
データベースのコピー操作は、データベースの移動と類似しています。 唯一の重要な違いは、操作の終了方法です。 データベースのコピー操作を完了すると、トランザクション ログからコピー先データベースへのレプリケーションが停止します。 ユーザーはコピー操作を完了するためのコマンドを明示的に発行しますが、ログ レプリケーションが停止した正確なタイミングは制御しません。 最後に、ソース データベースと移行先データベースの両方がオンラインであり、独立しており、読み取り/書き込みワークロードの準備ができています。
前提条件
データベースをコピーまたは移動する前に、次の要件を満たしている必要があります。
- ソース マネージド インスタンスを含むリソース グループに対して "読み取り" アクセス許可を持っている必要があります。また、ソースと宛先のインスタンスの両方に対してデータベース レベルの "書き込み" アクセス許可を持っている必要があります。
- ソースと宛先のインスタンスが別々の Virtual Network にある場合は、Azure 仮想ネットワーク ピアリングなど、2 つのインスタンスの Virtual Network 間にネットワーク接続が確立されている必要があります。 また、TCP プロトコルでは、ポート 5022 とポート範囲 11000 から 11999 の受信トラフィックと送信トラフィックを許可する必要があります。 これは、ソースと宛先のインスタンスをホストする両方のサブネットに適用されます。 詳細については、さまざまな Azure VNet 内のインスタンス間にネットワーク接続を確立する方法を確認してください。
データベースをコピーまたは移動する
Azure portal を使って、データベースを別のマネージド インスタンスにコピーまたは移動できます。 そのためには次を行います。
Azure portal で、マネージド インスタンスに移動します。
[データ管理] で [データベース] を選択します。
1 つ以上のデータベースを選び、ペインの上部にある [コピー] または [オプション] オプションを選びます。
[移動] を選ぶと、操作の完了時にソース データベースはドロップされ、[コピー] を選ぶと、操作の完了時にソース データベースはオンラインのままになります。 いずれかのオプションを選ぶと、[マネージド データベースの移動] または [マネージド データベースのコピー] ページが開きます。 そのページが開いたら、操作に含める追加のデータベースを選択できます。
[ソースの詳細] ペインで、ソース データベースであるマネージド インスタンスの詳細を指定します。
[宛先の詳細] ペインで、宛先マネージド インスタンスの詳細を指定します。
[レビューと開始] を選択してソースと宛先の詳細を検証し、[開始] を選択して操作を開始します。
[開始] を選択すると、インスタンスの [データベース] ページに戻り、操作の進行状況を監視できます。
[データベース] ページの [操作の詳細] 列を見て、操作の状態が "移動中" または "コピー中" であることを確認します。
取り消す場合は、[進行中] を選び、作業中のデータベースを選び、[操作のキャンセル] を選んでシードを停止し、宛先データベースをドロップします。
操作を監視します。 シードが完了すると、[操作の詳細] 列に "Move ready for completion" (移動の完了の準備完了) または "Copy ready for completion" (コピーの完了の準備完了) という状態が表示されます。
[完了の準備完了] を選んで [操作の詳細] 列を開き、コピーまたは移動する準備ができているデータベースを選びます。次に、[完了] を選んで操作を終了し、宛先データベースをオンラインにします。
ソース データベースに加えた変更は、この間に、つまり [完了] を選択するまでの間に、宛先データベースにレプリケートされます。 24 時間以内に完了しないと、操作は自動的に取り消され、宛先データベースが削除されます。 [完了] を選ぶと操作が完了し、[データベース] ページに戻ります。ここで操作が完了したことを確認できます。
データベースを移動した場合はオフラインになるため、そのデータベース名は使用できません。
コピー操作と移動操作のパフォーマンス
データベースのコピー操作と移動操作の両方に、2 つのフェーズがあります。 1 つ目は初期シード処理で、2 つ目はソース データベースから宛先データベースへの、変更内容のレプリケーションです。 通常、初期シード処理は、運用フェーズにおいて、より手のかかるフェーズです。 初期シード処理の完了にかかる時間は、データのサイズとアクティブなコピー操作または移動操作の数によって異なります。 ソースと宛先の Azure SQL Managed Instance で発生するワークロードの厳しさと、ソースと宛先との間のネットワーク速度も、シード処理のスピードに影響します。 最適化された状況において、推奨されたグローバル VNET ピアリングを使用してソースと宛先との接続が確立された場合には、シード処理の速度は 1 時間あたり最大 360 GB になります。 シード処理プロセスとその速度は、DMV sys.dm_hadr_physical_seeding_stats 経由で監視できます。
SELECT
role_desc,
transfer_rate_bytes_per_second,
transferred_size_bytes,
database_size_bytes,
start_time_utc,
estimate_time_complete_utc,
end_time_utc,
local_physical_seeding_id
FROM
sys.dm_hadr_physical_seeding_stats;
制限事項
コピーと移動の機能には次の制限事項があることを考慮してください。
- ソースと宛先のインスタンスを同じにすることはできません。
- ソース インスタンスと宛先インスタンスは、同じ Azure リージョンに存在する必要があります。
- コピーおよび移動できるのは、"ユーザー" データベースのみです。 "システム" データベースのコピーと移動はサポートされていません。
- 1 つのデータベースは、一度に 1 つの移動またはコピー操作のみに含めることができます。
- ソース インスタンスは、一度に最大 8 つのコピーまたは移動操作を実行できます。 8 つより多くの操作を開始できますが、一部はサービスによって管理されるキューに登録され、後で処理されます。
- コピーまたは移動操作中にデータベースの名前を変更することはできません。
- データベース タグは、コピー操作または移動操作ではコピーされません。
- データベースのコピーと移動の操作を行っても、PITR バックアップはコピーまたは移動されません。
- フェールオーバー グループの一部であるか、Managed Instance リンクを使っているデータベースをコピーまたは移動することはできません。
- ソースまたは宛先のマネージド インスタンスは、フェールオーバー グループ (geo ディザスター リカバリー) のセットアップを使用して構成してはいけません。
- これらの機能に依存するデータベースを移動した後は、トランザクション レプリケーション、変更データ キャプチャ (CDC)、または分散トランザクションを再構成する必要があります。
- ソース データベースが TDE 保護機能としてカスタマー マネージド キー (CMK) を使用している場合に、データベースをターゲット SQL Managed Instance にコピーまたは移動するには、Azure Key Vault でソース データベースの暗号化に使用されたものと同じキーに、ターゲット インスタンスがアクセスできる必要があります。
- Always-up-to-date 更新ポリシーを使用して構成されたインスタンスのデータベースをコピーしたり、SQL Server 2022 更新ポリシーを使用して構成されたインスタンスに移動したりすることはできません。 SQL Server 2022 更新ポリシーを使用して構成されたインスタンスのデータベースが、Always-up-to-date 更新ポリシーを使用したインスタンスにコピーまたは移動されると、SQL Server 2022 更新ポリシーを使用して構成されたインスタンスにコピーまたは移動することはできません。
関連するコンテンツ
データベースのコピーと移動に関連するその他のドキュメント。
- データベースのコピーとデータベースの移動に関する Azure PowerShell ドキュメント。
- データベースのコピーとデータベースの移動に関する Azure CLI ドキュメント
- SQL Managed Instance 間の接続を有効にする。
その他のデータ移動オプションについては、以下を確認してください。