TiDBデータ移行の概要
TiDBデータ移行(DM)は、統合データ移行タスク管理プラットフォームであり、MySQL互換データベース(MySQL、MariaDB、 Aurora MySQLなど)からTiDBへのフルデータ移行と増分データレプリケーションをサポートします。データ移行の運用コストを削減し、トラブルシューティングプロセスを簡素化するのに役立ちます。
基本機能
- MySQLとの互換性。DMはMySQLプロトコルと互換性があり、 MySQL 5.7およびMySQL 8.0のほとんどの機能と構文に対応しています。
- DMLおよびDDLイベントの複製。MySQLbinlog内のDMLおよびDDLイベントの解析と複製をサポートします。
- MySQLシャードの移行とマージ。DMは、複数のMySQLデータベースインスタンスを上流から下流の1つのTiDBデータベースに移行およびマージすることをサポートします。さまざまな移行シナリオに合わせてレプリケーションルールをカスタマイズできます。上流のMySQLシャードのDDL変更を自動的に検出して処理できるため、運用コストを大幅に削減できます。
- さまざまな種類のフィルタ。イベントタイプ、正規表現、SQL式を事前に定義することで、データ移行プロセス中にMySQLbinlogイベントをフィルタリングできます。
- 集中管理。DMはクラスタ内の数千ノードをサポートし、多数のデータ移行タスクを同時に実行および管理できます。
- サードパーティのオンラインスキーマ変更プロセスの最適化。MySQLエコシステムでは、gh-ostやpt-oscなどのツールが広く使用されています。DMは、中間データの不要な移行を回避するために変更プロセスを最適化します。詳細は、オンラインDDL参照してください。
- 高可用性。DMは、データ移行タスクを異なるノードに自由にスケジュールすることをサポートします。少数のノードがクラッシュしても、実行中のタスクには影響しません。
クイックインストール
DMをインストールするには、以下のコマンドを実行してください。
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
tiup install dm dmctl
使用制限
DMツールを使用する前に、以下の制限事項にご注意ください。
データベースのバージョン要件
MySQL バージョン 5.6 ~ 8.0
MariaDB バージョン >= 10.1.2 (実験的機能)
注記:
上流のMySQL/MariaDBサーバー間にプライマリ/セカンダリ移行構造がある場合は、次のバージョンを選択してください。
- MySQLバージョン > 5.7.1
- MariaDB バージョン >= 10.1.3
DDL構文の互換性
現在、TiDBはMySQLがサポートするすべてのDDLステートメントと互換性があるわけではありません。DMはTiDBパーサーを使用してDDLステートメントを処理するため、TiDBパーサーがサポートするDDL構文のみをサポートします。詳細については、 MySQLとの互換性参照してください。
DM は、互換性のない DDL ステートメントが発生するとエラーを報告します。このエラーを解決するには、dmctl を使用して手動で処理し、この DDL ステートメントをスキップするか、指定された DDL ステートメントに置き換える必要があります。詳細については、 異常な SQL ステートメントをスキップまたは置換します参照してください。
DMは、ビュー関連のDDLステートメントおよびDMLステートメントをダウンストリームのTiDBクラスタに複製しません。ダウンストリームのTiDBクラスタでビューを手動で作成することをお勧めします。
GBK文字セットとの互換性
- DM は、v5.4.0 より前の TiDB クラスターへの
charset=GBKテーブルの移動をサポートしていません。
- DM は、v5.4.0 より前の TiDB クラスターへの
Binlogの互換性
- DM は、MySQL 8.0 の新機能binlog トランザクションペイロードイベントイベントをサポートしていません。 binlog Transaction_payload_event を使用すると、アップストリームとダウンストリームの間でデータの不整合が発生する可能性があります。
ベクトルデータ型の複製
- DMは、MySQLベクトルデータ型をTiDBに移行または複製することをサポートしていません。
貢献する
DMオープンソースプロジェクトへのご参加を歓迎いたします。皆様のご貢献を心よりお待ちしております。詳細については、 CONTRIBUTING.mdをご覧ください。
コミュニティのサポート
DMについては、オンラインドキュメントで詳しく学ぶことができます。ご質問があれば、 GitHubでお問い合わせください。
ライセンス
DM は Apache 2.0 ライセンスに準拠しています。詳細については、 ライセンスを参照してください。
DM版
バージョン5.4より前のDMドキュメントは、TiDBドキュメントとは独立しています。これらの以前のバージョンのDMドキュメントにアクセスするには、以下のリンクのいずれかをクリックしてください。
注記:
- 2021年10月以降、DMのGitHubリポジトリはpingcap/tiflowに移行しました。DMに問題がある場合は、フィードバックのために
pingcap/tiflowリポジトリに問題を報告してください。- 以前のバージョン(v1.0およびv2.0)では、DMはTiDBとは独立したバージョン番号を使用していました。v5.3以降、DMはTiDBと同じバージョン番号を使用するようになりました。DM v5.3はDM v2.0に互換性の変更はなく、アップグレードプロセスは標準的なもので、バージョン番号を上げるだけです。