データを SQL Managed Instance に移動する
多くの移行では、オンプレミスとクラウド データベースを同期させる必要がある期間が伴います。 たとえば、クライアントによって両方のデータベースに対する変更が行われる場合があります。
あなたはスポーツ小売製品データベースを Azure SQL Managed Instance に移行しました。 Web サイトは既にクラウド データベースを使用しています。 新しいデータベースを使用するようにクライアントの再構成を開始しています。 あなたはユーザーを新しいシステムに一括移行することにしました。 次のユーザーを移行する前に、チームごとの問題の解決に時間をかけます。 このアプローチでは、すべてのユーザーを一度に中断することなく、トラブルシューティングと問題解決を行うことができます。 次に、Azure で新しいデータベースを使用するようにデータ分析システムを再構成します。 この間、クラウドとオンプレミスのデータベースが 1 時間ごとに同期されるようにする必要があります。
これからデータ同期を実装するためのさまざまな方法を検討します。 テーブルのサブセットのみを転送する必要がある場合は、これらの方法を使ってデータを選択的に移行することもできます。 このような柔軟性があるので、データ移行へのアプローチをさらにカスタマイズできます。
オンプレミス サーバーを使用した接続オプション
多くの場合、オンプレミスのデータベースのデータを Azure SQL Managed Instance と同期しておく必要があります。 たとえば、クライアント アプリケーションの新しいデータベースへの移行をステージしたい場合があります。つまり、クライアントが両方のデータベースに接続する期間があるということです。
データの同期方法を選択する前に、セキュリティで保護された接続があることを確認することが重要です。 オンプレミスのコンピューターと Azure のリソースとの間の通信を確立するために使用できる接続オプションは 3 種類あります。
- ポイント対サイト。 ポイント対サイト (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 Managed Instance のデータをオンプレミスのサーバーとの間で同期させることができます。
ネイティブ バックアップと復元
Shared Access Signature (SAS) を使って、Azure Blob Storage ファイルから Azure SQL Managed Instance のデータベースを復元できます。
これを行うには、Azure Blob Storage にアクセスできる資格情報を作成し、COPY_ONLY
オプションを指定して BACKUP DATABASE
コマンドを使います。 データベースが 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 ユーティリティは、インポートできるようにテーブルをファイルにエクスポートするコマンドライン ツールです。 このアプローチを使うと、1 つの 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 ストレージ アカウント共有。
- Azure ファイル共有にアクセスするために、マネージド インスタンス サブネットのセキュリティ規則でポート 445 (TCP 送信) を開きます。
- パブリッシャーまたはディストリビューターがマネージド インスタンス上にあり、サブスクライバーがオンプレミスにある場合は、ポート 1433 (TCP 送信) を開きます。
アプリケーションを SQL マネージド インスタンスに接続する
SQL マネージド インスタンスは、マネージド インスタンス専用の Azure 仮想ネットワーク サブネット内に配置する必要があります。 このデプロイにより、セキュリティで保護されたプライベート IP アドレスと、オンプレミス ネットワークに接続する機能が得られます。
ユーザーとクライアント アプリケーションは、Azure portal、PowerShell、Azure CLI、および REST API を使用して、マネージド インスタンス データベースに接続できます。
通信はすべて暗号化され、証明書を使って署名されます。 通信相手の信頼性を確認するために、マネージド インスタンスでは、証明書失効一覧を介してこれらの証明書が確認されます。 証明書が失効している場合、SQL マネージド インスタンスではデータを保護するために接続が終了されます。