移行タスクの事前チェック

DM を使用してアップストリームからダウンストリームにデータを移行する前に、事前チェックによりアップストリーム データベース構成のエラーを検出し、移行がスムーズに進むようにします。このドキュメントでは、DM 事前チェック機能について、その使用シナリオ、チェック項目、および引数を含めて紹介します。

利用シーン

データ移行タスクをスムーズに実行するために、DM はタスクの開始時に事前チェックを自動的にトリガーし、チェック結果を返します。 DM は、事前チェックに合格した後にのみ移行を開始します。

事前チェックを手動でトリガーするには、 check-taskコマンドを実行します。

例えば:

tiup dmctl check-task ./task.yaml

チェック項目の説明

タスクの事前チェックがトリガーされた後、DM は、移行モードの構成に従って、対応するアイテムをチェックします。

このセクションには、すべての事前チェック項目がリストされています。

ノート:

本書では、合格しなければならないチェック項目を「(必須)」と表記しています。

  • 必須のチェック項目に合格しない場合、DM はチェック後にエラーを返し、移行タスクを続行しません。この場合、エラー メッセージに従って構成を変更し、事前チェックの要件を満たしてからタスクを再試行してください。

  • 必須ではないチェック項目をパスしなかった場合、DM はチェック後に警告を返します。チェック結果に警告のみが含まれ、エラーが含まれていない場合、DM は移行タスクを自動的に開始します。

共通チェック項目

選択した移行モードに関係なく、事前チェックには常に次の一般的なチェック項目が含まれます。

  • データベースのバージョン

    • MySQL バージョン > 5.5

    • MariaDB バージョン >= 10.1.2

  • アップストリームの MySQL テーブル スキーマの互換性

    • アップストリーム テーブルに、TiDB でサポートされていない外部キーがあるかどうかを確認します。事前チェックで外部キーが見つかった場合は、警告が返されます。
    • (必須) 文字セットに互換性の違いがあるかどうかを確認します。詳細については、 TiDB がサポートする文字セットを参照してください。
    • (必須) 上流のテーブルに主キー制約または一意キー制約があるかどうかを確認します (v1.0.7 から導入)。

完全データ移行のチェック項目

完全データ移行モード ( task-mode: full ) の場合、 共通チェック項目に加えて、事前チェックには次のチェック項目も含まれます。

  • (必須) アップストリーム データベースのダンプ権限

    • INFORMATION_SCHEMA およびダンプ テーブルに対する SELECT 権限
    • consistency=flushの場合は RELOAD パーミッション
    • consistency=flush/lockの場合、ダンプ テーブルに対する LOCK TABLES 権限
  • (必須) アップストリームの MySQL マルチインスタンス シャーディング テーブルの一貫性

    • ペシミスティック モードでは、すべてのシャード テーブルのテーブル スキーマが次の項目で一致しているかどうかを確認します。

      • 列の数
      • カラム名
      • カラムの順序
      • カラムの種類
      • 主キー
      • 一意のインデックス
    • オプティミスティック モードで、すべてのシャード テーブルのスキーマが楽観的な互換性を満たすかどうかを確認します。

    • 移行タスクがstart-taskコマンドで正常に開始された場合、このタスクの事前チェックは整合性チェックをスキップします。

  • シャード テーブルの主キーの自動インクリメント

    • シャード テーブルに自動インクリメント主キーがある場合、事前チェックは警告を返します。自動インクリメントの主キーに競合がある場合は、解決策について自動インクリメント主キーの競合を処理するを参照してください。

増分データ移行のチェック項目

増分データ移行モード ( task-mode: incremental ) の場合、 共通チェック項目に加えて、事前チェックには次のチェック項目も含まれます。

  • (必須) アップストリーム データベースの REPLICATION 権限

    • レプリケーション クライアントの権限
    • REPLICATION SLAVE パーミッション
  • (必須) データベースのプライマリ - セカンダリ構成

    • アップストリーム データベースのデータベース ID server_idを指定する必要があります (AWS Aurora以外の環境では GTID をお勧めします)。
  • (必須) MySQL バイナリログ構成

    • Binlog が有効になっているかどうかを確認します (DM で必要)。
    • binlog_format=ROWが構成されているかどうかを確認します (DM は ROW 形式の binlog の移行のみをサポートします)。
    • binlog_row_image=FULLが構成されているかどうかを確認します (DM はbinlog_row_image=FULLのみをサポートします)。
    • binlog_do_dbまたはbinlog_ignore_dbが設定されている場合、移行するデータベーステーブルがbinlog_do_dbおよびbinlog_ignore_dbの条件を満たしているかどうかを確認します。
  • (必須) 上流のデータベースがオンライン DDLプロセス ( ghostテーブルは作成されているが、 renameフェーズはまだ実行されていないプロセス) にあるかどうかを確認します。アップストリームがオンライン DDL プロセスにある場合、事前チェックはエラーを返します。この場合、DDL が完了するまで待ってから再試行してください。

完全および増分データ移行のチェック項目

完全および増分データ移行モード ( task-mode: all ) の場合、 共通チェック項目に加えて、事前チェックにはフルデータ移行チェック項目増分データ移行チェック項目も含まれます。

無視できるチェック項目

事前チェックにより、環境内の潜在的なリスクを見つけることができます。チェック項目を無視することはお勧めできません。データ移行タスクに特別なニーズがある場合は、 ignore-checking-items構成アイテムを使用して一部のチェック項目をスキップできます。

チェック項目説明
dump_privilege上流の MySQL インスタンスでユーザーのダンプ権限を確認します。
replication_privilege上流の MySQL インスタンスでユーザーのレプリケーション権限を確認します。
versionアップストリーム データベースのバージョンを確認します。
server_idアップストリーム データベースで server_id が設定されているかどうかを確認します。
binlog_enableアップストリーム データベースで binlog が有効になっているかどうかを確認します。
table_schemaアップストリーム MySQL テーブルのテーブル スキーマの互換性をチェックします。
schema_of_shard_tablesアップストリームの MySQL マルチインスタンス シャード内のテーブル スキーマの一貫性をチェックします。
auto_increment_ID上流の MySQL マルチインスタンス シャードで自動インクリメント主キーが競合するかどうかを確認します。

ノート:

v6.0 より前のバージョンでは、より多くの無視可能なチェック項目がサポートされています。 v6.0 以降、DM はデータの安全性に関するいくつかのチェック項目を無視することを許可しません。たとえば、 binlog_row_imageパラメーターを正しく構成しないと、レプリケーション中にデータが失われる可能性があります。

事前チェック引数の構成

移行タスクの事前チェックでは、並列処理がサポートされています。シャード テーブルの行数が 100 万レベルに達した場合でも、数分で事前チェックを完了できます。

事前チェックのスレッド数を指定するには、移行タスク構成ファイルのmydumpersフィールドのthreads引数を構成します。

mydumpers: # Configuration arguments of the dump processing unit global: # Configuration name threads: 4 # The number of threads that access the upstream when the dump processing unit performs the precheck and exports data from the upstream database (4 by default) chunk-filesize: 64 # The size of the files generated by the dump processing unit (64 MB by default) extra-args: "--consistency none" # Other arguments of the dump processing unit. You do not need to manually configure table-list in `extra-args`, because it is automatically generated by DM.

ノート:

threadsは、アップストリーム データベースと DM 間の物理接続の数を決定します。 threadsの値が大きすぎると、アップストリームの負荷が増加する可能性があります。したがって、 threadsを適切な値に設定する必要があります。