移行のアプローチ

完了

データベースの移行には、オンラインまたはオフライン移行、バックアップと復元による移行、カスタム SQL コードまたはスクリプトを使用した移行など、さまざまなアプローチを採用できます。 各アプローチは、特定のビジネス シナリオに最も適しています。

たとえば、あなたが勤務するスタートアップ企業では、サプライヤー コミュニケーション データベースが重要であり、ユーザーへのサービスを中断することなく移行を実行する必要があります。 会社のこの部門は、24 時間 365 日体制で運営されており、データベースをオフラインにすることができる予測可能な、動きのない時間帯はほとんどありません。 これに対して、コンピューター支援設計 (CAD) システムが使用されるのは平日だけであるため、週末にオフラインにし、Azure に移行できます。

ここでは、移行を実行する際に選択できるアプローチ、手法、ツールについて説明します。

エクスポートとインポートを使用する場合

エクスポートおよびインポート手法を使用すると、移行で移動されるデータとスキーマを制御できます。 新しいデータベースに移行するデータを選択し、移行中にデータを消去または変更する可能性がある場合は、エクスポートおよびインポート ツールを使用します。

次の場合に、エクスポートおよびインポート手法の使用を検討します。

  • オンプレミス データベースのテーブルのサブセットを選択して、クラウド データベースに移行する場合。

  • 制約、ビュー、関数、プロシージャ、トリガーなどのデータベース オブジェクトを移行し、クラウド データベースでこれらのオブジェクトを設定する方法を制御する場合。

  • MySQL、MariaDB、PostgreSQL 以外の外部ソースからデータをインポートする場合。

たとえば、これらのシナリオではエクスポートとインポートを検討することをお勧めします。

  • 販売支援ワークロードの前に、マーケティング ワークロードをクラウドに移行してテストする、段階的な部分移行を実行したい。 どちらのワークロードでも、オンプレミス システムの SalesDB データベースのテーブルを使用している。 プロジェクトの第 1 フェーズではマーケティング テーブルのみを移行し、第 2 フェーズでは販売テーブルのみを移行したい。

  • オンプレミスのデータが古く、現在のビジネスに関連するデータと関連しないデータが混在している。 この機会を利用して古いデータを削除し、より合理化されたデータベース スキーマを検討したい。

  • 製品に関するデータが含まれた大規模なスプレッドシートがある。 このデータをクラウド データベースに移行したい。

エクスポートとインポートによる移行の計画

エクスポートとインポートを使用する利点は、移行するデータをより細かく制御できることです。 ただし、欠点は、必要なすべてのオブジェクトが確実に含まれるように、より慎重に計画する必要があることです。

次のオブジェクトがどのように移行されるのかを理解しておく必要があります。

  • データベース スキーマ。
  • 主キー、外部キー、インデックスなどの制約。
  • ビュー、関数、プロシージャ、トリガー。
  • ユーザー アカウントとアクセス許可。

MySQL および MariaDB のエクスポートとインポート

SQL スクリプトを使用して、データベース間で選択的なエクスポートとインポートを実行できます。 ただし、オンプレミス データベースが MySQL または MariaDB にある場合は、次のような役立つツールを利用できます。

  • MySQL Workbench。 これは、Oracle Corporation が開発した、グラフィカル ユーザー インターフェイス (GUI) を備えた一般的なデータベース設計ツールです。 柔軟なデータ選択オプションを備えたデータ エクスポート ツールが含まれています。

  • Toad Edge。 これは、Quest が開発した競合するツールセットです。 これを使用して、MySQL データベースと PostgreSQL データベースからデータをエクスポートおよびインポートします。

  • Navicat。 このデータベース管理 GUI ツールは、MariaDB データベースとも互換性があります。

  • mysqlimport。 このコマンドライン ツールでは、テキスト ファイルからデータをインポートできます。

重要

Azure Database for MySQL と Azure Database for MariaDB では、InnoDB ストレージ エンジンのみがサポートされています。 MyISAM エンジンなど、他のエンジンを使用するテーブルがある場合は、Azure に移行する前にそれらを InnoDB に変換する必要があります。

PostgreSQL のエクスポートとインポート

PostgreSQL には、データのエクスポートとインポートに使用する次のツールが用意されています。

  • pgAdmin。 これは、PostgreSQL 管理者向けの GUI ユーティリティです。 データをエクスポートおよびインポートするためのインターフェイスが提供されます。

  • pg_dump。 これは、テスト用など、さまざまな形式でデータベースをエクスポートするために使用するコマンドライン ツールです。 エクスポートされた .sql ファイルは、psql ユーティリティを使用してインポートする前に編集できます。

  • Toad Edge。 これは、MySQL で使用するものと同じユーティリティです。

バックアップと復元

バックアップおよび復元操作は、通常、データベースを災害から保護するために行われます。 データベースの正確なコピーが作成され、保存されます。 災害によって作業コピーが破壊された場合、バックアップ コピーが復元され、通常の業務を再開できます。

バックアップを別の場所に復元することによって、データベース全体をクラウド内のデータベースなどの別の場所に移行します。

バックアップと復元を使用する場合

バックアップ ツールにより、データベースのシンプルで正確なコピーが作成されます。 クラウド データベースに復元すると、オンプレミス システムで使用していたものとまったく同じデータとスキーマが得られます。 次の場合に、バックアップと復元を使用してデータベースを移行します。

  • データベース全体またはデータベースのセットを 1 回の操作で移行する場合。

  • 移行中に、データ、スキーマ、または他のデータベース オブジェクトに変更を加える必要がない場合。

これらのような場合に、バックアップと復元を使用して移行を実行することを検討してください。

  • 可能な限り変更を加えずに、クラウドにリフトアンドシフトしたい単一のデータベース システムがある。

  • 複数のデータベースがあるシステムで段階的な部分移行を実行したい。 各ワークロードは、データベース全体でサポートされている。

バックアップ ファイルからクラウドの場所にデータベースを復元するときは、ネットワーク経由でクラウド データベースに送信する必要があるデータの量を考慮してください。 このデータ転送を最適化するには、バックアップされたデータベースを、送信先データベースと同じリージョンにある仮想マシンにコピーし、そこから復元します。 この復元は、オンプレミスのバックアップ ファイルを使用するよりも高速であり、ネットワーク帯域幅の競合が発生する可能性が低減されます。

MySQL および MariaDB でのバックアップと復元の計画

オンプレミス サーバー上のデータベースをバックアップするには、コマンド ラインで mysqldump ツールを使用します。 作成された .sql ファイルを mysql コマンドにスクリプトとして渡すことによって、クラウド データベースに復元します。 GUI ツールを使用したい場合は、PHPMyAdmin アプリケーション、または MySQL Workbench を選択します。 これらの GUI ツールでは、データのバックアップと復元の両方を実行できます。

Azure Database for MySQL と Azure Database for MariaDB でサポートされているのは、InnoDB エンジンのみであることに注意してください。 バックアップを実行する前に、すべてのテーブルを InnoDB に変換する必要があります。

互換性の問題を回避するには、クラウドで使用されている MySQL または MariaDB のバージョン番号が、オンプレミスのデータベース サーバーのバージョン番号と一致していることを確認します。 Azure Database for MySQL では、バージョン 5.6、5.7、8.0 がサポートされています。 Azure Database for MariaDB では、バージョン 10.2 および 10.3 がサポートされています。 オンプレミス サーバーで以前のバージョンが使用されている場合は、クラウドに移行する前に、まず、これらのバージョンのいずれかにアップグレードし、オンプレミスで問題をトラブルシューティングすることを検討してください。

PostgreSQL でのバックアップと復元の計画

PostgreSQL での同等のコマンドライン バックアップおよび復元ツールは、pg_dumppg_restore です。 GUI バックアップおよび復元ツールとしては、Toad Edge を使用します。

カスタム アプリケーション コード

広範なデータ変換要件がある場合や、通常とは異なる移行を実行する場合は、オンプレミスの MySQL、PostgreSQL、または MariaDB データベースからクラウドにデータを移行するための独自のカスタム コードを記述することを検討します。

カスタム コードでは、さまざまな形式を使用できます。 選択する言語とフレームワークは、主に開発チームの専門知識によって決まります。

  • データベースから生成され、変更された SQL スクリプト、またはゼロから開発された SQL スクリプト。
  • .NET や Java などの開発フレームワークからコンパイルされたコード。
  • PHP または Node.js のスクリプト。
  • Bash または PowerShell 用のシェル スクリプト。

カスタム コード アプローチを使用すると、非常に高い柔軟性が得られます。 データのフィルター処理、集計、変換の方法をカスタマイズできます。また、複数の移行先に移行したり、複数のソースからのデータをマージしたりできます。 すぐに使えるバックアップまたはエクスポート ツールでは満たすことができない要件がある場合は、このアプローチを使用します。

このアプローチの欠点は、開発時により多くの投資が必要になることです。 カスタム コードですべてのデータを正しく移行するには、実際のデータで実行する前に広範なテストを行う必要があります。 この作業には、熟練した開発者とテスト担当者のチームが必要であり、プロジェクトの予算を増大させることも少なくありません。 カスタム移行コードの記述を検討している場合は、信頼性の高いコードを作成するために必要な時間と労力を過小評価しないようにしてください。

Azure Database Migration Service

Azure には、Azure Database Migration Service (DMS) と呼ばれる柔軟なサービスが用意されています。これを使用して、複数のデータ ソースから Azure データ プラットフォームへのシームレスなオンライン移行を実行します。 これらのプラットフォームには、Azure Database for MySQLAzure Database for MariaDBAzure Database for PostgreSQL が含まれます。

Azure へのデータベースのオンライン移行を実行する場合は、Azure DMS の使用を必ず検討してください。

最初の移行

DMS を使用して移行を実行するには、これらの作業を行います。

  1. 任意のプラットフォームで、Azure 内に新しいターゲット データベースを作成します。
  2. 新しい Azure Database Migration Service (DMS) のデータ移行プロジェクトを作成する。
  3. オンプレミスのソース データベースからスキーマを生成します。 MySQL を使用している場合は、sqldump を使用してスキーマを生成できます。 ソース データベースが PostgreSQL の場合は、pg_dump を使用します。
  4. 移行先として機能する空のデータベースを作成します。
  5. 移行先データベースにスキーマを適用します。
  6. DMS 移行プロジェクトで、移行元データベースと移行先データベースの接続の詳細を構成します。
  7. DMS 移行プロジェクトを実行します。 プロジェクトによってデータが転送され、レポートが生成されます。
  8. レポートを確認し、特定された問題を修正します。

オンライン移行

Azure DMS は、オンライン移行に適したツールです。オンライン移行では、移行の実行中も元のデータベースを使用できます。 ユーザーは、ソース データベース内のデータを引き続き変更できます。 Azure DMS では、レプリケーションを使用して、これらの変更を移行されたデータベースと同期します。 移行が完了したら、移行されたデータベースに接続するようにユーザー アプリケーションを再構成します。

MySQL または MariaDB から Azure SQL Database への移行

オンプレミスの MySQL データベース サーバーでホストされているデータベースを Azure クラウドに移行し、クラウド データベースで MySQL を実行する必要がない場合は、Azure SQL Database への移行を検討します。 Azure SQL Database は、Microsoft の業界をリードする SQL Server データベース エンジンの PaaS 実装です。 エンタープライズレベルの可用性、スケーラビリティ、セキュリティを備え、監視と管理を簡単に行うことができます。

同様に、オンプレミスのデータベース サーバーで MariaDB を実行している場合も、Azure SQL Database への移行を検討できます。 MariaDB は MySQL のフォークであるため、プロセスがよく似ています。

Azure SQL Database は、Azure Database for MySQL や Azure Database for MariaDB よりも完全な機能を備えています。

注意

Azure SQL Database で使用されるデータ型、データベース オブジェクト、API は MySQL および MariaDB とは異なるため、移行されたデータベースに接続するアプリケーションを変更することが必要な場合があります。 開発者に相談して、オンプレミスの MySQL または MariaDB データベースからクラウドの Azure SQL Database にクライアント アプリケーションを移植するために必要な作業量を確認してください。

SQL Server Migration Assistant for MySQL

MySQL から Azure SQL Database に移行することにした場合は、専用ツールである SQL Server Migration Assistant for MySQL を使用できます。 この GUI ツールは、移行元の MySQL データベースと、Azure SQL Database サービスでデータベースとして使用できる SQL Server データベースに接続します。

接続されると、アシスタントによって完全なスキーマが Azure SQL Database にコピーされ、すべてのデータ型が SQL Server の対応するデータ型に変換されます。 また、ビュー、プロシージャ、トリガーなどのオブジェクトも移行されます。 その後、MySQL から Azure SQL Database へのデータの移行を開始できます。

注意

SQL Server Migration Assistant for MySQL は、MariaDB データベースの Azure SQL Database への移行についてはテストされていません。