移行ツールの選択肢を調べる
Azure Database for MySQL フレキシブル サーバーへのデータ移行の計画と移行に使用できるツールは複数あります。 以降のセクションで説明するように、各選択肢には長所と短所があります。
Azure Migrate を使用して MySQL ワークロードを検出して評価する
Azure Migrate は、物理環境でホストされているサーバー、データベース、Web アプリケーションなどのオンプレミスのインフラストラクチャを大規模に検出、評価し、Azure の サービスとしてのプラットフォーム (PaaS) およびサービスとしてのインフラストラクチャ (IaaS) のターゲットに移行するための一元化されたハブを提供します。 Azure Migrate の MySQL 検出および評価機能 (プレビュー) は、次のような要素により、計画フェーズを支援します。
- 環境内の MySQL インスタンスとその属性を検出し、
- Azure Database for MySQL – フレキシブル サーバーへの移行の準備状況を評価し、
- Azure Database for MySQL - フレキシブル サーバーで MySQL ワークロードをホストするための適切なコンピューティングおよびストレージ SKU に関する推奨事項と、関連するコストの情報を提供。
Azure Database for MySQL Import CLI
Azure Database for MySQL インポートは、MySQL のオンプレミスまたは仮想マシン (VM) のワークロードを Azure Database for MySQL - フレキシブル サーバーにシームレスに移行できる、単一の CLI コマンドです。 シンプルで高速な移行パスを提供します。 このコマンドは、ユーザーの入力に基づいて構成されたターゲットのフレキシブル サーバーをプロビジョニングしてから、Azure Blob Storage アカウントに格納されたソース サーバーの (Percona XtraBackup を使用して取得した) 物理バックアップ ファイルを、フレキシブル サーバーのターゲット インスタンスに復元します。
CLI コマンド: az mysql flexible-server --import
インポート CLI を評価する際には、次の点を考慮する必要があります。
ソース サーバーの構成に次のパラメーターと値が指定されている必要があります。
lower_case_table_names = 1 innodb_file_per_table = ON
システム テーブルスペース名は、12 MB (MySQL の既定値) 以上のサイズの
ibdata1
である必要があります。移行用にサポートされているのは InnoDB エンジンのみです。
構成 (ファイアウォール、ユーザー、権限) など、ソース サーバーの一部の要素は移行されません。
移行中は、パフォーマンス最適化のために、高可用性 (HA) が無効になります。 移行が完了した後に必ず HA を再度有効にしてください。
Azure Database Migration Service
Azure Database Migration Service は、Azure データ プラットフォームへのデータベース移行を簡素化、ガイド、自動化するのに役立つフル マネージド サービスです。
Azure Database Migration Service は、繰り返し可能な移行プロジェクトを作成して実行することで機能します。 ソースは、オンプレミスのワークロードから、クラウドベースのワークロード (Amazon RDS MySQL など) に及びます。 Azure Database Migration Service は、厳密に言うとオフラインの移行ツールですが、MySQL binlog
を活用してほぼゼロ ダウンタイムのオンライン移行を実行します。
mysqldump
通常 MySQL と一緒にインストールされる mysqldump
クライアント ユーティリティは、データベース バックアップ ツールです。 mysqldump を使用して、スキーマとソース データベースのコンテンツを SQL ステートメントにダンプできます。 その後、そのようなステートメントをそのまま実行して、コンテンツのすべてまたは一部をターゲット データベースに復元できます。
大きなデータ セットの場合、SQL ステートメントを実行してダンプを復元する方法は、あまりよいパフォーマンスを発揮しないことがあります。 たとえば、インデックスでは一度に 1 つのステートメントが更新されるため、ディスクの入出力のパフォーマンスが過負荷になるおそれがあります。 このため、一括データ移行用に最適化された mydumper
や myloader
などのツールを mysqldump
と組み合わせることで、移行を高速化できます。 インポートされるデータに対処するには、mysqldump
を使用して、ターゲット データベースのランディング ゾーンである、データベース スキーマを再作成します。
ときには、移行データの転送をカスタマイズする必要があります。 テスト用にデータの一部をエクスポートしたり、顧客のためにターゲット データベースのデータを置き換えたりすることが必要になることがあります。 移行前に、テスト データベースの問題をデバッグするために、個人データに編集を加えるなど、データに変更を加えることもできます。
これらのシナリオのうち、最も柔軟性が高いのは mysqldump
です。 SQL ステートメントが含まれるファイルをエクスポートするため、ターゲット サーバーでステートメントを実行する前に、データに変更を加える方法を選択できます。
mydumper と myloader
mydumper
と myloader
は、オープンソースの MySQL バックアップ ツールである、MyDumper パッケージの一部です。 スキーマ全体を SQL ステートメントに出力して再度直線的に実行する mysqldump
ツールとは異なり、MyDumper ツールは並列処理を利用し、テーブル別に分離されたファイルと人間が判読可能な形式を使用するなどのほか、ソースとターゲットのバイナリ ログの正確な位置が保たれるメリットがあります。
大きなデータベースの移行の場合は、mydumper
と myloader
が推奨されます。これらのツールは、並列処理を使用することで、10 倍以上パフォーマンスが高くなるためです。
これらのツールは、Linux 向けのバイナリ リリースは rpm および deb パッケージとして、macOS 向けは Homebrew を介して入手できます。 その他のプラットフォームでは、ソースからツールをコンパイルする必要があるため、複雑になります。
MySQL Workbench
MySQL Workbench には、MySQL を操作するためのグラフィカル ユーザー インターフェイス (GUI) が備わっており、データベース移行のためのツールなど、数多くのツールにアクセスできます。 MySQL Workbench は、MySQL Workbench の機能一覧で説明されているように、MySQL の Community エディションと商用エディションで使用できます。
MySQL binlog
mysqlbinlog
ツール では、MySQL バイナリ ログが使用されます。このログには、テーブルの変更やデータの挿入、更新、削除など、データベースの変更イベントが記録されます。 各変更は、段階的に増える "位置" を使用して識別され、mysqlbinlog
ツールを使用して各変更を検査および操作できます。
バイナリ ログは、オンライン移行とオフライン移行の両方で使用できます。
- オンライン移行では、バイナリ ログがライブでのデータ変更をソースからターゲットに複製するうえで重要な役割を担います。
- オフライン移行では、バイナリ ログを使用すると、以前に移行されたスナップショット以降の変更を正確に生成することで、段階的な移行が可能になります。
バイナリ ログのメンテナンスには、追加の処理とストレージ リソースが必要です。