DMワーカー紹介
DM-worker は、TiDB Data Migration (DM) のコンポーネントであり、DM-master によって割り当てられたタスクとサブタスクを実行します。フルおよび増分移行では、1 つの MySQL 互換ソースインスタンスからデータをダンプし、ダンプしたデータをターゲット TiDB クラスターにロードします。その後、レプリケーションクライアントとしてソース Binlog を読み取り、イベントを変換およびフィルタリングして、ターゲットに適用します。DM-master は、ソースとサブタスクのステータスについて DM-worker に問い合わせます。
主要な概念
- ワーカーインスタンスがオフラインになると、DM-master はそのタスクを別の利用可能なワーカーに自動的に再スケジュールして、データレプリケーションを再開できます。これはフルエクスポート/インポートフェーズ中には適用されないことに注意してください。
- 1 つの DM-worker プロセスは、一度に 1 つ の上流ソースデータベースインスタンスに接続します。シャードテーブルのマージ時など、複数のソースから移行するには、複数の DM-worker プロセスを実行する必要があります。
DM-worker 処理ユニット
タスクモードに応じて、DM-worker のサブタスクは ダンプ、ロード、Binlog複製/同期の各処理ユニットを実行します。DM-worker は、バインドされたソースに対してオプションのリレーログ処理ユニットを実行することもできます。
リレーログ
リレーログはオプションであり、デフォルトでは無効になっています。有効にすると、DM-worker は上流 Binlog イベントをローカルディスクに保存してから、Binlog replication 処理ユニットがそれらを読み取ります。長時間実行されるフル移行やブロックされたタスクが上流 Binlog の保持期間を超える可能性がある場合、または同じソースに対する複数のタスクで単一の Binlog ストリームを共有する必要がある場合は、リレーログを有効にしてください。リレーログはディスク、I/O、CPU リソースを消費し、レプリケーションレイテンシーを増加させる可能性があります。設定および運用の詳細については、データ移行リレーログ を参照してください。
ダンプ処理装置
ダンプ処理ユニットは、アップストリームの MySQL/MariaDB から完全なデータをローカル ディスクにダンプします。
ロード処理装置
ロード処理ユニットは、ダンプ処理ユニットのダンプされたファイルを読み取り、これらのファイルを下流の TiDB にロードします。
Binlog複製/同期処理ユニット
Binlogログレプリケーション/同期処理ユニットは、上流の MySQL/MariaDB のbinlogイベントまたはリレーログのbinlogイベントを読み取り、これらのイベントを SQL ステートメントに変換し、下流の TiDB にこれらのステートメントを適用します。
DMワーカーに必要な権限
このセクションでは、DM-worker に必要な上流および下流のデータベース ユーザーの権限と、それぞれの処理ユニットに必要なユーザー権限について説明します。
上流データベースユーザー権限
上流データベースユーザーに必要な権限は、データベースの種類 (MySQL/MariaDB) とバージョンによって異なります。
MySQL および MariaDB(MariaDB 10.5.2 より前)
MySQL、および 10.5.2 より前の MariaDB バージョンでは、ユーザーに次の権限が必要です。
これらの権限を付与するには、次のステートメントを実行します。
GRANT RELOAD, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'your_user'@'your_wildcard_of_host';
GRANT SELECT ON `db1`.* TO 'your_user'@'your_wildcard_of_host';
10.5.2 より前の MariaDB からフルデータエクスポートを行う場合は、ダンプユニットが InnoDB メタデータをクエリできるように、PROCESS も付与してください。
GRANT PROCESS ON *.* TO 'your_user'@'your_wildcard_of_host';
MariaDB 10.5.2 から 10.5.8
MariaDB 10.5.2 以降では、REPLICATION CLIENT 権限は BINLOG MONITOR に名前変更され、いくつかのレプリケーションステートメントでは SUPER を分割して作成された新しい権限が使用されます。MariaDB 10.5.2 から 10.5.8 では、ユーザーに次の権限が必要です。
これらの権限を付与するには、次のステートメントを実行します。
GRANT PROCESS, RELOAD, BINLOG MONITOR, REPLICATION SLAVE, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN ON *.* TO 'your_user'@'your_wildcard_of_host';
GRANT SELECT ON `db1`.* TO 'your_user'@'your_wildcard_of_host';
MariaDB 10.5.9 以降
MariaDB 10.5.9 以降では、SHOW SLAVE STATUS と SHOW REPLICA STATUS に REPLICA MONITOR 権限が必要です。MariaDB は SHOW GRANTS でこの権限を SLAVE MONITOR として表示します。MariaDB 10.5.2 から 10.5.8 に記載された権限に加えて、REPLICA MONITOR を付与してください。
GRANT PROCESS, RELOAD, BINLOG MONITOR, REPLICATION SLAVE, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, REPLICA MONITOR ON *.* TO 'your_user'@'your_wildcard_of_host';
GRANT SELECT ON `db1`.* TO 'your_user'@'your_wildcard_of_host';
下流データベースユーザー権限
ダウンストリーム データベース (TiDB) ユーザーには、次の権限が必要です。
移行する必要があるデータベースまたはテーブルに対して次のGRANTステートメントを実行します。
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX ON db.table TO 'your_user'@'your_wildcard_of_host';
GRANT ALL ON dm_meta.* TO 'your_user'@'your_wildcard_of_host';
各処理ユニットに必要な最小限の権限
次の表は、MySQL および 10.5.2 より前の MariaDB バージョンについて、各処理ユニットに必要な最小限の権限を示しています。MariaDB 10.5.2 以降については、前のセクションの権限表を参照してください。