SQL Managed Instance にデータを移動する
多くの移行には、オンプレミスとクラウド データベースの同期を維持する必要がある期間が含まれます。 たとえば、クライアントが両方のデータベースに変更を加える場合があります。
スポーツ小売製品データベースを Azure SQL Managed Instance に移行しました。 Web サイトは既にクラウド データベースを使用しています。 新しいデータベースを使用するようにクライアントを再構成し始めます。 ユーザーを新しいシステムにバッチで移行することにしました。 チームごとに、次のユーザーを移行する前に問題を解決するのに時間がかかります。 この方法では、すべてのユーザーを一度に中断することなく、トラブルシューティングと問題の解決が可能になります。 次に、Azure の新しいデータベースを使用するようにデータ分析システムを再構成します。 この間、クラウドとオンプレミスのデータベースが 1 時間ごとに同期されるようにする必要があります。
データ同期を実装するためのさまざまな方法について説明します。 これらの方法は、テーブルのサブセットのみを転送する必要がある場合に、データを選択的に移行するためにも使用できます。 この柔軟性により、データ移行に合わせたアプローチが可能になります。
オンプレミス サーバーとの接続オプション
多くの場合、オンプレミス のデータベース内のデータを Azure SQL Managed Instance と同期させておく必要があります。 たとえば、クライアント アプリケーションの新しいデータベースへの移行をステージングすることができます。つまり、クライアントが両方のデータベースに接続する期間があります。
データ同期方法を選択する前に、セキュリティで保護された接続を確保することが重要です。 オンプレミスのコンピューターと Azure のリソース間の通信を確立するには、3 つの異なる接続オプションがあります。
- ポイント対サイト VPN。 ポイント対サイト (P2S) VPN ゲートウェイ接続を使用すると、個々のクライアント コンピューターから仮想ネットワークへのセキュリティで保護された接続を作成できます。
- サイト間接続。 サイト間 VPN ゲートウェイは、オンプレミス サイト全体を Azure ネットワークに接続するために使用されます。
- ExpressRoute。 Azure ExpressRoute を使用すると、Azure データセンターとオンプレミス インフラストラクチャ、またはコロケーション環境のインフラストラクチャ間にプライベート接続を作成できます。 ExpressRoute 接続はパブリック インターネット経由ではなく、一般的なインターネット接続よりも信頼性が高く、速度が速く、待機時間が短く、セキュリティが高くなります。
パブリック エンドポイント
SQL Managed Instance のパブリック エンドポイントは、VPN を使用せずにインターネットからデータベースに接続するのに役立ち、データ通信専用に設計されています。 データのパブリック エンドポイントは、プライベート エンドポイントと同時に共存できます。 セキュリティ上の理由から、この実装では、パブリック エンドポイントを有効にするときに、データベース管理者とネットワーク管理者の間で職務の分離 (SoD) が可能になります。
マネージド インスタンスのパブリック エンドポイントを有効にするには、2 つの手順が必要です。 SoD の場合、これらの手順を完了するには、次のデータベースとネットワークのアクセス許可を持つ 2 つの個別のロールが必要です。
- ロールベースのアクセス制御アクセス許可がスコープ Microsoft.Sql/managedInstances/* にあるデータベース管理者は、マネージド インスタンスのパブリック エンドポイントを有効にするために PowerShell スクリプトを実行する必要があります。
- Microsoft.Network/* スコープでロールベースのアクセス制御アクセス許可を持つネットワーク管理者は、ネットワーク セキュリティ グループ (NSG) 上のパブリック エンドポイントによって使用されるポート 3342 を開き、非対称ルーティングを回避するために UDR ルートを提供する必要があります。
同期方法を選択する
多くの方法を使用して、SQL Database マネージド インスタンスからオンプレミス サーバーにデータを同期し、元に戻すことができます。
ネイティブのバックアップと復元
Shared Access Signature (SAS) を使用して、Azure BLOB ストレージ ファイルから Azure SQL Managed Instance のデータベースを復元できます。
これには、Azure Blob Storage にアクセスできる資格情報を作成し、BACKUP DATABASE オプションで COPY_ONLY コマンドを使用する必要があります。 データベースが 200 GB を超える場合は、複数の URL の場所を指定することで、ストライプ バックアップを使用できます。
BACKUP DATABASE YourDatabase TO URL = 'https://youraccount.blob.core.windows.net/yourcontainer/yourdatabase.bak' WITH COPY_ONLY
SQL Managed Instance でデータベースを復元するには:
RESTORE DATABASE YourDatabase FROM URL = 'https://youraccount.blob.core.windows.net/yourcontainer/yourdatabase.bak'
SqlPackage を使用した BACPAC ファイル
BACPAC ファイルは、基本的にデータベースのメタデータとデータの両方の zip 形式のバージョンです。 このデプロイ方法は SQL Database と互換性があります。SQL Managed Instance では、Azure portal 内の BACPAC 経由の移行はサポートされていません。 代わりに、BACPAC ファイルと共に SQLPackage ユーティリティ を使用する必要があります。
一括コピー プログラム (BCP)
BCP ユーティリティは、テーブルをインポートできるようにファイルにエクスポートするコマンド ライン ツールです。 このアプローチを使用して、単一の SQL Database から SQL Managed Instance に移行し、戻ります。
Azure Data Factory (ADF)
Azure Data Factory は、インジェストに重点を置いて、データの移動とオーケストレーション用に構築されています。 ADF には、SSIS パッケージを実行するための統合ランタイムのサポートと、SQL Managed Instance のパブリック インターネット サポートがあります。
トランザクション レプリケーション
トランザクション レプリケーション は、継続的に接続されたデータベース サーバー間でデータを移動する方法です。
このプロセスは、パブリケーション データベース オブジェクトとデータのスナップショットから始まります。 初期スナップショットが作成されると、パブリッシャーのデータまたはスキーマに対する後続の変更は、通常、Azure SQL Managed Instance にほぼリアルタイムで配信されます。
SQL Managed Instance は、パブリッシャー、ディストリビューター、およびサブスクライバーになる可能性があるため、柔軟です。
レプリケーションは、テーブルの一部をレプリケートできる数少ないテクノロジの 1 つです。 これらのテーブル パーツは記事と言 います。 その後、このデータはディストリビューターに送信されます。ディストリビューターは、任意の数のサブスクライバーにデータのサプライヤーです。
必要条件
- 接続では、レプリケーション参加者間で SQL 認証を使用します。
- レプリケーションで使用される作業ディレクトリの Azure Storage アカウント共有。
- マネージド インスタンス サブネットのセキュリティ規則でポート 445 (TCP 送信) を開き、Azure ファイル共有にアクセスします。
- パブリッシャーまたはディストリビューターがマネージド インスタンス上にあり、サブスクライバーがオンプレミスの場合は、ポート 1433 (TCP 送信) を開きます。
SQL マネージド インスタンスへのアプリケーションの接続
SQL マネージド インスタンスは、マネージド インスタンス専用の Azure 仮想ネットワーク サブネット内に配置する必要があります。 このデプロイにより、セキュリティで保護されたプライベート IP アドレスと、オンプレミス ネットワークに接続できるようになります。
ユーザーとクライアント アプリケーションは、Azure portal、PowerShell、Azure CLI、REST API を使用してマネージド インスタンス データベースに接続できます。
すべての通信は、証明書を使用して暗号化され、署名されます。 通信相手の信頼性を確認するために、マネージド インスタンスは証明書失効リストを通じてこれらの証明書を常に確認します。 証明書が失効した場合、SQL マネージド インスタンスは接続を閉じてデータを保護します。