移行ガイド:MySQL から SQL Server へ

適用対象:SQL Server

このガイドでは、MySQL データベースを SQL Server に移行する方法について学習します。

その他の移行ガイドについては、「Azure データベースの移行ガイド」を参照してください。

前提条件

MySQL データベースの SQL Server への移行を開始する前に、次のことを行います。

  • ソース環境がサポートされていることを確認する。 現時点では、MySQL 5.6 および 5.7 がサポートされています。
  • SQL Server Migration Assistant for MySQL (SSMA for MySQL) を取得する。
  • ソースとターゲットの両方にアクセスするための接続と十分なアクセス許可を取得する。

移行前

前提条件を満たした後、ソースの MySQL 環境を検出し、移行の実現可能性を評価する準備が整います。

アクセス

SSMA for MySQL を使用すると、データベース オブジェクトとデータを確認し、移行についてデータベースを評価できます。

評価を作成するには、次のようにします。

  1. SSMA for MySQL を開きます。

  2. [ファイル] メニューの [新しいプロジェクト] を選択します。

  3. プロジェクト名、プロジェクトを保存する場所および移行ターゲットを入力します。 その後、 [移行先] オプションで [SQL Server] を選択します。

    Screenshot that shows New Project option.

  4. [MySQL への接続] ダイアログ ボックスで、接続の詳細を入力してから、お使いの MySQL サーバーに接続します。

    Screenshot that shows Connect to MySQL option.

  5. 移行する MySQL データベースを選択します。

    Screenshot that shows selecting the MySQL database you want to migrate.

  6. [MySQL Metadata Explorer] で MySQL データベースを右クリックし、 [レポートの作成] を選択します。 または、右上隅にある [レポートの作成] タブを選択することもできます。

    Screenshot that shows Create Report feature.

  7. HTML レポートを確認し、変換の統計情報とエラーまたは警告を把握します。 また、Excel でレポートを開き、MySQL オブジェクトのインベントリとスキーマ変換の実行に必要な作業量を確認することもできます。 このレポートの既定の場所は、こちらに示すように、SSMAProjects 内のレポート フォルダーです。

    drive:\Users\<username>\Documents\SSMAProjects\MySQLMigration\report\report_2016_11_12T02_47_55\

    Screenshot that shows a conversion report.

型マッピングを検証する

既定のデータ型マッピングを検証し、必要に応じて要件に基づいて変更します。 そのためには次を行います。

  1. [ツール] メニューの [プロジェクトの設定] を選択します。

  2. [Type Mapping](型のマッピング) タブを選択します。

    Screenshot that shows Type Mapping feature.

  3. [MySQL Metadata Explorer] でテーブルを選択することにより、各テーブルの型マッピングを変更できます。

SSMA for MySQL の変換設定の詳細については、プロジェクトの設定 (変換) (MySQLToSQL)をご覧ください。

スキーマの変換

データベース オブジェクトを変換すると、MySQL からオブジェクトの定義が取得され、類似の SQL Server オブジェクトに変換された後、この情報が SSMA for MySQL メタデータに読み込まれます。 その情報は、SQL Server のインスタンスには読み込まれません。 その後、SQL Server Metadata Explorer を使用して、オブジェクトとそれらのプロパティを表示できます。

変換中に SSMA for MySQL によって、出力メッセージが出力ペインに、エラー メッセージが [エラー一覧] ペインに出力されます。 出力とエラー情報を使用して、目的の変換結果を取得するために MySQL データベースまたは変換プロセスを変更する必要があるかどうかを判断します。

スキーマを変換するには、次のようにします。

  1. (省略可能) 動的またはアドホックのクエリを変換するには、ノードを右クリックし、[ステートメントの追加] を選択します。

  2. [SQL Server への接続] タブを選択します。

    1. お使いの SQL Server インスタンス用に接続詳細を入力します。
    2. ドロップダウン リストから自分のターゲット データベースを選択するか、新しい名前を入力します。これにより、データベースはターゲット サーバー上に作成されます。
    3. 認証の詳細を入力してから、 [接続] を選択します。

    Screenshot that shows Connect to SQL Server.

  3. [MySQL Metadata Explorer] で MySQL データベースを右クリックしてから、 [スキーマの変換] を選択します。 または、右上隅にある [スキーマの変換] タブを選択することもできます。

    Screenshot that shows Convert Schema option.

  4. 変換が終了した後、変換されたオブジェクトと元のオブジェクトを比較および確認して、潜在的な問題を特定し、推奨事項に基づいてそれらに対処します。

    Screenshot that shows comparing and reviewing objects.

  5. 変換された Transact-SQL テキストを元のコードと比較し、推奨事項を確認します。

    Screenshot that shows comparing and reviewing converted code.

  6. [出力] ペインで [結果の確認] を選択し、 [エラー一覧] ペインでエラーを確認します。

  7. オフライン スキーマ修復の演習のために、プロジェクトをローカルに保存します。 [ファイル] メニューの [プロジェクトの保存] を選択します。 この手順により、スキーマを SQL Server に発行する前に、ソースとターゲットのスキーマをオフラインで評価し、修復を実行する機会が得られます。

詳細については、「MySQL データベースの変換 (MySQLToSQL)」を参照してください。

移行

必要な前提条件を満たし、''移行前'' 段階に関連するタスクを完了した後、スキーマとデータの移行を実行する準備が整います。

データの移行には次の 2 つのオプションがあります。

  • クライアント側データの移行

    • クライアント側のデータ移行を実行するには、 [プロジェクトの設定] ダイアログ ボックスで [Client Side Data Migration Engine](クライアント側のデータ移行エンジン) オプションを選択します。

    注意

    ターゲット データベースとして SQL Express エディションが使用されている場合は、クライアント側のデータ移行のみが許可され、サーバー側のデータ移行はサポートされません。

  • サーバー側データの移行

    • サーバー側でデータ移行を実行する前に、次のことを確かめてください。
      • SSMA for MySQL Extension Pack が、SQL Server のインスタンスにインストールされている。
      • SQL Server エージェント サービスが、SQL Server のインスタンスで実行されている。
    • サーバー側のデータ移行を実行するには、 [プロジェクトの設定] ダイアログ ボックスで [Server Side Data Migration Engine](サーバー側のデータ移行エンジン) オプションを選択します。

重要

サーバー側のデータ移行エンジンを使用する予定の場合は、データを移行する前に、SSMA for MySQL を実行しているコンピューターに SSMA for MySQL Extension Pack と MySQL プロバイダーをインストールする必要があります。 SQL Server エージェント サービスも実行されている必要があります。 拡張機能パックをインストールする方法の詳細については、「SQL Server での SSMA コンポーネントのインストール (MySQLToSQL)」を参照してください

自分のスキーマを発行し、データを移行するには、次のようにします。

  1. [SQL Server Metadata Explorer] でデータベースを右クリックし、 [データベースとの同期] を選択して、スキーマを発行します。 この操作により、MySQL データベースが SQL Server インスタンスに発行されます。

    Screenshot that shows Synchronize with Database.

  2. ソース プロジェクトとターゲットの間のマッピングを確認します。

    Screenshot that shows reviewing the synchronization with the database.

  3. [MySQL Metadata Explorer] で移行するデータベースまたはオブジェクトを右クリックし、 [データの移行] を選択して、データを移行します。 または、 [データの移行] タブを選択することもできます。データベース全体のデータを移行するには、データベース名の横にあるチェック ボックスをオンにします。 個々のテーブルからデータを移行するには、データベース、 [テーブル] の順に展開してから、テーブルの横にあるチェック ボックスをオンにします。 個々のテーブルのデータを除外するには、次のチェック ボックスをオフにします。

    Screenshot that shows Migrate Data option.

  4. 移行が完了した後、 [データ移行レポート] を表示します。

    Screenshot that shows the Data Migration Report.

  5. SQL Server Management Studio (SSMS) を使用してお使いの SQL Server インスタンスに接続し、データとスキーマを確認して移行を検証します。

    Screenshot that shows validation in SQL Server Management Studio.

移行後

移行段階が正常に完了したら、移行後の一連のタスクを完了し、すべてが可能な限り円滑かつ効率的に機能していることを確認する必要があります。

アプリケーションを修復する

データをターゲット環境に移行した後、以前にソースが使用されていたすべてのアプリケーションで、ターゲットの使用を開始する必要があります。 このタスクを実現するために、場合によってはアプリケーションの変更が必要になります。

テストを実行する

データベース移行のテストア プローチは、次のアクティビティで構成されています。

  1. 検証テストを作成する: データベースの移行をテストするには、SQL クエリを使用する必要があります。 ソース データベースとターゲット データベースの両方に対して実行する検証クエリを作成する必要があります。 その検証クエリでは、定義されているスコープに対応する必要があります。
  2. テスト環境を設定する: このテスト環境には、ソース データベースとターゲット データベースのコピーを含める必要があります。 必ずテスト環境を分離してください。
  3. 検証テストを実行する: ソースとターゲットに対して検証テストを実行した後、結果を分析します。
  4. パフォーマンス テストを実行する: ソースとターゲットに対してパフォーマンス テストを実行した後、結果を分析および比較します。

最適化

移行後の段階は、発生したデータの精度の問題を調整したり、完全性を検証したり、ワークロードでのパフォーマンスの問題に対処したりするために非常に重要です。

Note

これらの問題とそれを軽減するための手順の詳細については、「移行後の検証および最適化ガイド」を参照してください。

移行資産

この移行シナリオを完了するためのその他の支援については、次のリソースを参照してください。 これは、実世界の移行プロジェクトの取り組みをサポートするために開発されたものです。

タイトル 説明
データ ワークロード評価モデルとツール このツールを使用すると、特定のワークロードに対して、推奨される "最適な" ターゲット プラットフォーム、クラウドの準備状況、アプリケーションまたはデータベースの修復レベルがわかります。 簡単な計算とレポート生成の機能があり、自動化された均一なターゲット プラットフォームの決定プロセスが用意されているため、大規模な資産評価を素早く行うことができます。
MySQL から SQL Server へのデータベース比較ユーティリティ データベース比較ユーティリティは、ソースおよびターゲット プラットフォームの両方でデータが同一であることを確認するために使用できる Windows コンソール アプリケーションです。 このツールを使用すると、すべての、または選択したテーブル、行、および列内の行または列レベルまでデータを効率的に比較できます。

データ SQL エンジニアリング チームが、これらのリソースを開発しました。 このチームの主要な作業は、Microsoft の Azure データ プラットフォームへのデータ プラットフォーム移行プロジェクトの複雑な近代化を容易にし、迅速に進めることです。