重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

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

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

使用シナリオ

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

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

例えば:

tiup dmctl check-task ./task.yaml

チェック項目の説明

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

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

ノート:

このドキュメントでは、合格する必要のあるチェック項目に「(必須)」というラベルが付いています。

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

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

共通のチェック項目

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

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

    • MySQLバージョン>5.5

    • MariaDBバージョン>=10.1.2

    警告
    • DMを使用してMySQL8.0からTiDBにデータを移行することは、実験的機能です(DM v2.0以降に導入されました)。実稼働環境で使用することはお勧めしません。
    • DMを使用してMariaDBからTiDBにデータを移行することは、実験的機能です。実稼働環境で使用することはお勧めしません。
  • アップストリームMySQLテーブルスキーマの互換性

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

完全なデータ移行の項目を確認してください

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

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

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

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

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

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

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

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

増分データ移行の項目を確認してください

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

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

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

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

    • 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_idserver_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を適切な値に設定する必要があります。