データ移行のアーキテクチャ

このドキュメントでは、Data Migration (DM) のアーキテクチャを紹介します。

DM は、DM-master、DM-worker、および dmctl の 3 つのコンポーネントで構成されています。

Data Migration architecture

アーキテクチャコンポーネント

DMマスター

DM-master は、データ移行タスクの操作を管理およびスケジュールします。

  • DM クラスターのトポロジー情報の保存
  • DM ワーカー プロセスの実行状態の監視
  • データ移行タスクの実行状態の監視
  • データ移行タスクを管理するための統合ポータルを提供する
  • シャーディング シナリオでの各インスタンスのシャード テーブルの DDL 移行の調整

DMワーカー

DM-worker は、特定のデータ移行タスクを実行します。

  • binlog データをローカル ストレージに永続化する
  • データ移行サブタスクの構成情報の保存
  • データ移行サブタスクの操作のオーケストレーション
  • データ移行サブタスクの実行状態の監視

DM-worker の詳細については、 DMワーカーの紹介を参照してください。

dmctl

dmctl は、DM クラスターを制御するために使用されるコマンド ライン ツールです。

  • データ移行タスクの作成、更新、または削除
  • データ移行タスクの状態を確認する
  • データ移行タスクのエラー処理
  • データ移行タスクの構成が正しいことを確認する

アーキテクチャの機能

高可用性

複数の DM マスター ノードをデプロイすると、すべての DM マスター ノードが組み込みの etcd を使用してクラスターを形成します。 DM-master クラスターは、クラスター ノード情報やタスク構成などのメタデータを格納するために使用されます。 etcd によって選出されたリーダー ノードは、クラスター管理やデータ移行タスク管理などのサービスを提供するために使用されます。したがって、使用可能な DM マスター ノードの数がデプロイされたノードの半分を超える場合、DM クラスターは通常、サービスを提供できます。

デプロイされた DM-worker ノードの数が上流の MySQL/MariaDB ノードの数を超えると、余分な DM-worker ノードはデフォルトでアイドル状態になります。 DM-worker ノードがオフラインになるか、DM-master リーダーから分離された場合、DM-master は、元の DM-worker ノードから他のアイドル状態の DM-worker ノードへのデータ移行タスクを自動的にスケジュールします。 (DM-worker ノードが隔離されている場合、そのノードでのデータ移行タスクは自動的に停止します);使用可能なアイドル状態の DM-worker ノードがない場合、元の DM-worker のデータ移行タスクは、1 つの DM-worker ノードがアイドル状態になるまで一時的にハングし、その後、タスクが自動的に再開されます。

ノート:

データ移行タスクが完全なエクスポートまたはインポートの処理中の場合、移行タスクは高可用性をサポートしません。主な理由は次のとおりです。

  • フル エクスポートの場合、MySQL は特定のスナップショット ポイントからのエクスポートをまだサポートしていません。これは、データ移行タスクが再スケジュールまたは再開された後、エクスポートは前の中断ポイントから再開できないことを意味します。

  • フル インポートの場合、DM-worker はノード間でエクスポートされたフル データの読み取りをまだサポートしていません。これは、データ移行タスクが新しい DM-worker ノードにスケジュールされた後、スケジュールが発生する前に元の DM-worker ノードでエクスポートされた完全なデータを読み取ることができないことを意味します。