インポートとエクスポートを使って Azure Database for MySQL - フレキシブル サーバーのデータベースを移行する
適用対象: Azure Database for MySQL - 単一サーバー Azure Database for MySQL - フレキシブル サーバー
重要
Azure Database for MySQL シングル サーバーは廃止パスにあります。 Azure Database for MySQL フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for MySQL フレキシブル サーバーへの移行の詳細については、Azure Database for MySQL シングル サーバーの現状に関するページを参照してください
この記事では、MySQL Workbench を使用して、Azure Database for MySQL フレキシブル サーバーにデータをインポートおよびエクスポートする 2 つの一般的な方法について説明します。
移行についての詳細かつ包括的なガイダンスについては、移行ガイド リソースを参照してください。
その他の移行シナリオについては、データベース移行ガイドを参照してください。
前提条件
MySQL データベースの移行を開始する前に、次のことを行う必要があります。
- Azure portal を使用して Azure Database for MySQL フレキシブル サーバー インスタンスを作成します。
- インポートおよびエクスポートを行うために MySQL Workbench または他のサードパーティの MySQL ツールをダウンロードしてインストールする。
Azure Database for MySQL フレキシブル サーバー インスタンス上にデータベースを作成する
MySQL Workbench、Toad、または Navicat を使用して、Azure Database for MySQL フレキシブル サーバー インスタンス上に空のデータベースを作成します。 データベースは、ダンプされたデータが含まれるデータベースと同じ名前にすることも、別の名前でデータベースを作成することもできます。
接続するには、次のようにします。
Azure portal で、Azure Database for MySQL フレキシブル サーバー インスタンスの [概要] ペインで接続情報を探します。
接続情報を MySQL Workbench に追加します。
インポート/エクスポート手法を使用する状況の判断
ヒント
データベース全体をダンプして復元するシナリオでは、代わりにダンプと復元のの手法を使用します。
次のシナリオでは、MySQL ツールを使用して、データベースをご利用の MySQL データベースにインポートおよびエクスポートします。 その他のツールについては、MySQL から Azure Database への移行ガイドの「移行方法」セクション (22 ページ) に移動してください。
- 既存の MySQL データベースからいくつかのテーブルを選択して、Azure Database for MySQL フレキシブル サーバーのデータベースにインポートする必要がある場合は、インポートとエクスポートの手法を使用することをお勧めします。 これにより、不要なテーブルを移行から除外して、時間とリソースを節約できます。 たとえば、mysqlpump では
--include-tables
または--exclude-tables
スイッチを、mysqldump では--tables
スイッチを使用します。 - テーブル以外のデータベース オブジェクトを移行する場合は、それらのオブジェクトを明示的に作成します。 制約 (主キー、外部キー、インデックス)、ビュー、関数、プロシージャ、トリガーなど、移行するデータベース オブジェクトを含めます。
- MySQL データベース以外の外部データ ソースからデータを移行する場合は、フラット ファイルを作成し、mysqlimport を使用してそれらのファイルをインポートします。
重要
Azure Database for MySQL 単一サーバーと Azure Database for MySQL フレキシブル サーバーでは、どちらも InnoDB ストレージ エンジンのみがサポートされています。 Azure Database for MySQL フレキシブル サーバー インスタンスにデータを読み込むときは、データベース内のすべてのテーブルで InnoDB ストレージ エンジンが使用されていることを確認します。
ソース データベースで別のストレージ エンジンが使用されている場合は、データベースを移行する前に InnoDB エンジンに変換します。 たとえば、MyISAM エンジンを使用する WordPress または Web アプリがある場合は、まず、データを InnoDB テーブルに移行してテーブルを変換します。 テーブルを作成するときに、ENGINE=INNODB
句を使用してエンジンを設定し、移行前にデータを互換性のあるテーブルに転送します。
INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
インポートおよびエクスポートのパフォーマンスに関する推奨事項
データのインポートとエクスポートで最適なパフォーマンスを得るために、次のようにすることをお勧めします。
- データを読み込む前に、クラスター化インデックスと主キーを作成します。 主キーの順序でデータを読み込みます。
- データの読み込みが完了するまでセカンダリ インデックスの作成を遅らせます。
- データを読み込む前に外部キー制約を無効にします。 外部キーのチェックを無効にすると、パフォーマンスが大幅に向上します。 読み込み後に制約を有効にし、データを検証して参照整合性を確認します。
- データを並列で読み込みます。 リソースの上限に達するような過剰な並列処理を避け、Azure Portal で使用可能なメトリックを使用してリソースを監視します。
- パーティション テーブルを適宜使用します。
MySQL Workbench を使用してデータをインポートおよびエクスポートする
MySQL Workbench でデータをエクスポートおよびインポートする方法には、オブジェクト ブラウザーのコンテキスト メニューからと [ナビゲーター] ペインからの 2 つがあります。 各方法の目的は異なります。
Note
MySQL Workbench で Azure Database for MySQL 単一サーバーまたは Azure Database for MySQL フレキシブル サーバーへの接続を追加する場合は、次のようにします。
- Azure Database for MySQL 単一サーバーの場合は、ユーザー名が <ユーザー名@サーバー名> の形式であることを確認してください。
- Azure Database for MySQL フレキシブル サーバーの場合は、<ユーザー名> のみを使用します。 <username@servername> を使用して接続すると、その接続は失敗します。
オブジェクト ブラウザーのコンテキスト メニューからテーブル データのエクスポートおよびインポート ウィザードを実行する
テーブル データのウィザードでは、CSV および JSON ファイルを使用するインポートとエクスポートの操作がサポートされます。 そのウィザードには、区切り記号、列の選択、エンコードの選択など、複数の構成オプションが含まれています。 各ウィザードは、ローカルまたはリモート接続された MySQL サーバーに対して実行できます。 インポート アクションには、テーブル、列、型マッピングが含まれます。
これらのウィザードにオブジェクト ブラウザーのコンテキスト メニューからアクセスするには、テーブルを右クリックし、 [テーブル データのエクスポート ウィザード] または [テーブル データのインポート ウィザード] を選択します。
テーブル データのエクスポート ウィザード
テーブルを CSV ファイルにエクスポートするには、次のようにします。
- エクスポートするデータベースのテーブルを右クリックします。
- [Table Data Export Wizard (テーブル データのエクスポート ウィザード)] を選択します。 エクスポートする列、行のオフセット (該当する場合)、数 (該当する場合) を選択します。
- [エクスポートするデータの選択] ペインで、 [次へ] を選択します。 ファイル パスとファイルの種類 (CSV または JSON) を選択します。 また、行区切り記号、文字列を囲む方法、フィールド区切り記号も選択します。
- [Select output file location](出力ファイルの場所の選択) ペインで、 [次へ] を選択します。
- [データのエクスポート] ペインで、 [次へ] を選択します。
テーブル データのインポート ウィザード
CSV からテーブルをインポートするには、次のようにします。
- インポートするデータベースのテーブルを右クリックします。
- インポートする CSV ファイルを見つけてそれを選び、 [次へ] を選択します。
- インポート先テーブル (新規または既存) を選び、 [Truncate table before import](インポート前にテーブルの切り詰め処理を行う) チェック ボックスをオンまたはオフにしてから、 [次へ] を選択します。
- エンコードと、インポートを行う列を選んでから、 [次へ] を選択します。
- [データのインポート] ペインで、 [次へ] を選択します。 ウィザードでデータがインポートされます。
[ナビゲーター] ペインから SQL データのエクスポートおよびインポート ウィザードを実行する
ウィザードを使用して、MySQL Workbench または mysqldump コマンドから生成された SQL データをエクスポートまたはインポートします。 そのウィザードには、 [ナビゲーター] ペインからアクセスできます。あるいは、メイン メニューから [サーバー] を選択することもできます。
データのエクスポート
[データのエクスポート] ペインを使用して、MySQL データをエクスポートできます。
MySQL Workbench の [ナビゲーター] ペインで、 [データのエクスポート] を選択します。
[データのエクスポート] ペインで、エクスポートする各スキーマを選択します。
各スキーマについて、エクスポートする特定のスキーマ オブジェクトまたはテーブルを選択できます。 構成オプションには、プロジェクト フォルダーまたは自己完結型 SQL ファイルへのエクスポート、格納されているルーチンとイベントのダンプ、テーブル データのスキップなどがあります。
また、 [Export a Result Set](結果セットのエクスポート) を使用して、SQL エディターの特定の結果セットを、CSV、JSON、HTML、XML などの別の形式にエクスポートすることもできます。
エクスポートするデータベース オブジェクトを選択し、関連するオプションを構成します。
[更新] を選択して、現在のオブジェクトを読み込みます。
必要に応じて、右上の [詳細オプション] を選択してエクスポート操作を調整します。 たとえば、テーブル ロックの追加、
insert
ではなくreplace
ステートメントの使用、バッククォート文字を含む識別子の引用などを行います。[エクスポートの開始] を選択して、エクスポート プロセスを開始します。
データのインポート
[データのインポート] ペインを使用して、データ エクスポート操作または mysqldump コマンドからエクスポートされたデータをインポートまたは復元できます。
- MySQL Workbench の [ナビゲーター] ペインで、[データのインポートまたは復元] を選択します。
- プロジェクト フォルダーまたは自己完結型 SQL ファイルを選択するか、インポート先スキーマを選ぶか、 [新規] ボタンを選択して新しいスキーマを定義します。
- [インポートの開始] を選択してインポート プロセスを開始します。
次のステップ
- 別の移行方法については、ダンプと復元を使用した Azure Database for MySQL フレキシブル サーバーへの MySQL データベースの移行に関する記事を参照してください。
- Azure Database for MySQL フレキシブル サーバーへのデータベース移行に関するさらに詳しい情報については、データベース移行ガイドを参照してください。