データ移行アーキテクチャ
このドキュメントでは、データ移行 (DM) のアーキテクチャについて説明します。
DM は、DM-master、DM-worker、dmctl の 3 つのコンポーネントで構成されます。
アーキテクチャコンポーネント
DMマスター
DM-master は、データ移行タスクの操作を管理およびスケジュールします。
- DMクラスタのトポロジ情報の保存
- DMワーカープロセスの実行状態を監視する
- データ移行タスクの実行状態の監視
- データ移行タスクの管理のための統合ポータルの提供
- シャーディングシナリオにおける各インスタンスのシャーディングされたテーブルの DDL 移行の調整
DMワーカー
DM-worker は特定のデータ移行タスクを実行します。
- binlogデータをローカルstorageに保存する
- データ移行サブタスクの構成情報を保存する
- データ移行サブタスクの操作のオーケストレーション
- データ移行サブタスクの実行状態の監視
DM-workerの詳細についてはDMワーカー紹介参照してください。
dmctl
dmctl は、DM クラスターを制御するために使用されるコマンド ライン ツールです。
- データ移行タスクの作成、更新、または削除
- データ移行タスクの状態を確認する
- データ移行タスクのエラー処理
- データ移行タスクの構成の正確さを確認する
アーキテクチャの特徴
高可用性
複数の DM マスター ノードを展開する場合、すべての DM マスター ノードは組み込みの etcd を使用してクラスターを形成します。DM マスター クラスターは、クラスター ノード情報やタスク構成などのメタデータを保存するために使用されます。etcd を通じて選出されたリーダー ノードは、クラスター管理やデータ移行タスク管理などのサービスを提供するために使用されます。したがって、利用可能な DM マスター ノードの数が展開されたノードの半分を超える場合でも、DM クラスターは正常にサービスを提供できます。
デプロイされた DM ワーカー ノードの数が上流の MySQL/MariaDB ノードの数を超えると、デフォルトでは余分な DM ワーカー ノードはアイドル状態になります。DM ワーカー ノードがオフラインになったり、DM マスター リーダーから分離したりした場合、DM マスターは元の DM ワーカー ノードのデータ移行タスクを他のアイドル状態の DM ワーカー ノードに自動的にスケジュールします (DM ワーカー ノードが分離されると、そのノード上のデータ移行タスクが自動的に停止されます)。使用可能なアイドル状態の DM ワーカー ノードがない場合、元の DM ワーカーのデータ移行タスクは、1 つの DM ワーカー ノードがアイドル状態になるまで一時的に停止し、その後タスクが自動的に再開されます。
注記:
データ移行タスクが完全なエクスポートまたはインポートのプロセス中の場合、移行タスクは高可用性をサポートしません。主な理由は次のとおりです。
完全なエクスポートの場合、MySQL は特定のスナップショット ポイントからのエクスポートをまだサポートしていません。つまり、データ移行タスクが再スケジュールまたは再開された後、エクスポートは以前の中断ポイントから再開できません。
完全インポートの場合、DM-worker はノード間でエクスポートされた完全なデータの読み取りをまだサポートしていません。つまり、データ移行タスクが新しい DM-worker ノードにスケジュールされた後、スケジュールが実行される前に、元の DM-worker ノードでエクスポートされた完全なデータを読み取ることはできません。