Data Transmission Service (DTS) を使用して、自己管理 TiDB データベースから PolarDB for MySQL クラスターへデータを移行します。DTS はスキーマ移行、完全なデータ移行、および増分データ移行をサポートしているため、切り替え(カットオーバー)まで宛先をソースと同期した状態に保つことで、ダウンタイムを最小限に抑えることができます。
全体の手順は以下の 4 つのステージで構成されます:
宛先の PolarDB for MySQL クラスターを作成し、アカウントの権限を確認します。
(増分移行のみ)Kafka クラスターをセットアップし、TiDB Binlog または TiCDC を構成して変更を Kafka へストリーミングします。
DTS 移行タスクを作成・設定します。
事前チェックを実行し、インスタンスを購入してタスクの進行状況を監視します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
TiDB ソースデータベースが使用しているストレージ容量よりも大きなストレージ容量を持つ PolarDB for MySQL クラスター。詳細については、「従量課金型 PolarDB for MySQL クラスターの購入」および「サブスクリプション型 PolarDB for MySQL クラスターの購入」をご参照ください。
必要な権限に記載されている権限を持つデータベースアカウント。
(増分移行のみ)Kafka クラスターおよび構成済みの増分データ収集パイプライン。詳細については、「(任意)増分データ収集のセットアップ」をご参照ください。
必要な権限
| データベース | 必要な権限 | 参考情報 |
|---|---|---|
| TiDB データベース | SHOW VIEW 権限および移行対象オブジェクトに対する SELECT 権限 | 権限管理 |
| PolarDB for MySQL クラスター | 宛先データベースに対する読み取りおよび書き込み権限 | データベースアカウントの作成と管理 |
課金
| 移行タイプ | インスタンス構成料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行および完全なデータ移行 | 無料 | 「アクセス方法」を「パブリック IP アドレス」に設定した場合に課金されます。詳細については、「課金概要」をご参照ください。 |
| 増分データ移行 | 課金概要課金されます。詳細については、「」をご参照ください。 | 「課金概要」を参照してください。 |
増分移行でサポートされる SQL 操作
| 操作タイプ | SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
| DDL | CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE、ADD COLUMN、DROP COLUMN |
注意事項
ソースデータベースの制限事項
送信帯域幅:ソースデータベースサーバーには十分な送信帯域幅が必要です。帯域幅が不足していると、移行速度が低下します。
主キーまたは一意制約:テーブルには PRIMARY KEY またはすべてのフィールドが一意である一意制約(UNIQUE constraint)が必要です。これらの制約がない場合、宛先データベースに重複レコードが発生する可能性があります。
1 タスクあたりのテーブル数制限:列レベルの編集(例:列名の変更)を伴う個別テーブルの移行では、1 タスクあたり最大 1,000 個のテーブルをサポートします。1,000 個を超えるテーブルを移行する場合は、複数のタスクに分割するか、データベース全体を移行してください。
移行中の DDL 制限:スキーマ移行および完全なデータ移行中は、データベースまたはテーブルのスキーマを変更する DDL 操作を実行しないでください。DTS が DDL 操作を検出すると、移行タスクが失敗します。
プレフィックスインデックス:TiDB のメタデータにはプレフィックスインデックスの長さが格納されません。移行後、プレフィックスインデックスの長さが失われ、インスタンスが起動しなくなる可能性があります。移行後に影響を受けるテーブルのプレフィックスインデックス長を手動で修正してください。
増分データの要件:増分データ移行には Kafka クラスターおよび TiDB Binlog または TiCDC コンポーネントが必要です。詳細については、「(任意)増分データ収集のセットアップ」をご参照ください。
その他の制限事項
増分データパーティション:DTS は Kafka トピック内のパーティション ID 0 のみから増分データを読み取ります。
位置情報の初期化:増分移行を含むタスクを作成した後は、直ちにソースデータベースで変更またはテストデータの挿入を行い、位置情報を更新してください。これを怠ると、過度の遅延によりタスクが失敗する可能性があります。
4 バイト文字:データに稀な文字や絵文字(4 バイト文字)が含まれる場合、宛先データベースおよびテーブルは UTF8mb4 文字セットを使用する必要があります。DTS のスキーマ移行を利用する場合は、宛先データベースの
character_set_serverインスタンスパラメーターも UTF8mb4 に設定してください。完全移行時のリソース使用量:完全なデータ移行は、ソースおよび宛先データベースの読み取りおよび書き込みリソースを消費し、負荷を高めます。移行を開始する前にデータベースパフォーマンスを評価し、非ピーク時間帯(例:CPU 負荷が 30 % 未満の時間帯)に完全移行を実行してください。
完全移行後の表領域サイズ:完全なデータ移行中の同時 INSERT 操作により、テーブルの断片化が発生します。移行完了後、宛先データベースの表領域はソースデータベースよりも大きくなります。
移行中の宛先への書き込み:移行中に宛先データベースへ書き込むと、ソースと宛先の間でデータの不整合が発生する可能性があります。
FLOAT および DOUBLE の精度:DTS は FLOAT および DOUBLE 値の読み取りに
ROUND(COLUMN,PRECISION)を使用します。FLOAT のデフォルト精度は 38 桁、DOUBLE のデフォルト精度は 308 桁です。これらの精度設定が要件を満たすことを確認してください。自動再開:DTS は過去 7 日以内に失敗したタスクを自動的に再開しようと試行します。ワークロードを宛先インスタンスへ切り替える前に、DTS タスクを停止または解放するか、宛先インスタンス上の DTS アカウントから書き込み権限を削除するために
REVOKEを実行してください。DDL 失敗: ターゲットデータベースで DDL 文が失敗した場合、DTS タスクは実行を継続します。失敗した DDL 文はタスクログで確認できます。「タスクログの表示」をご参照ください。
テクニカルサポートによる対応: DTS タスクが失敗した場合、テクニカルサポートは 8 時間以内にその復旧を試みます。復旧中、タスクが再起動される場合があり、タスクパラメーター(データベースパラメーターを除く)が変更される場合があります。変更される可能性のあるパラメーターについては、「インスタンスパラメーターの変更」をご参照ください。
(任意)増分データ収集のセットアップ
スキーマ移行および完全なデータ移行のみを実行する場合は、このセクションをスキップしてください。
TiDB からの増分変更をキャプチャするには、Kafka クラスターおよび TiDB Binlog または TiCDC のいずれかが必要です。どちらの方法も Kafka をトランスポート層として使用します。まず共通の Kafka セットアップ手順を完了し、その後選択した方法に応じた手順を実行してください。
ステップ 1:Kafka クラスターのセットアップ
以下のいずれかのオプションを選択してください。
自己管理 Kafka クラスター:Apache Kafka のドキュメントに従って Apache Kafka をデプロイします。
警告TiDB のバイナリログデータのボリュームに対応するため、Kafka 構成ファイルの以下のパラメーターを増加させてください。「Kafka 構成」をご参照ください。
コンポーネント パラメーター 理由 Broker message.max.bytesBroker が受け入れるメッセージの最大サイズを設定します。TiDB のバイナリログイベントは大規模になる可能性があるため、デフォルト値では書き込み失敗が発生します。 Broker replica.fetch.max.bytesフォロワーが 1 回のリクエストでフェッチできる最大バイト数を設定します。 message.max.bytes以上に設定する必要があります。これにより、巨大メッセージのレプリケーションが可能になります。Consumer fetch.message.max.bytesコンシューマーがパーティションごとにフェッチする最大バイト数を設定します。 message.max.bytes以上に設定する必要があります。これにより、DTS が完全なイベントを読み取ることができます。Message Queue for Apache Kafka:Alibaba Cloud のマネージド Kafka サービスを利用します。「はじめに」をご参照ください。
Kafka クラスターのネットワーク遅延を低減し、安定した接続性を確保するため、Message Queue for Apache Kafka インスタンスをソースデータベースサーバーと同じ仮想プライベートクラウド(VPC)内にデプロイしてください。
ステップ 2:Kafka トピックの作成
Kafka クラスターまたは Message Queue for Apache Kafka インスタンス内にトピックを作成します。
トピックは必ず 1 つのパーティションのみを指定してください。DTS はパーティション ID 0 のみから増分データを読み取ります。
ステップ 3:TiDB Binlog または TiCDC の構成
環境に応じて、以下のいずれかの方法を選択してください。
<details> <summary>オプション A:TiDB Binlog</summary>
ネットワーク遅延の影響を最小限に抑えるため、Pump コンポーネント、Drainer コンポーネント、および Kafka クラスターを、ソース TiDB データベースサーバーと同じ内部ネットワーク上にあるサーバーにデプロイしてください。
Pump および Drainer コンポーネントをデプロイします。「TiDB Binlog クラスターのデプロイ」をご参照ください。
Drainer の構成ファイルを編集し、出力先を Kafka に設定します。「Kafka カスタム開発」および「Kafka カスタム開発」をご参照ください。
TiDB データベースサーバーから Kafka クラスターへの接続を確認します。
DTS サーバーの CIDR ブロックを TiDB データベースのホワイトリストに追加します。詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。
</details>
<details> <summary>オプション B:TiCDC</summary>
TiCDC コンポーネントをインストールします。TiUP を使用して、既存の TiDB クラスターに TiCDC を追加またはスケールアウトします。「TiCDC のデプロイ」および「」をご参照ください。
tiup cdc cli changefeed create \コマンドを最初のコマンドとして使用して、増分データを Kafka へレプリケートします。「Kafka へのデータレプリケーション」および「」をご参照ください。TiDB データベースサーバーから Kafka クラスターへの接続を確認します。
</details>
移行タスクの作成
ステップ 1:データ移行ページへ移動
以下のいずれかの方法を使用してください。
DTS コンソール
DMS コンソール
実際の手順は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
ステップ 2:ソースおよび宛先データベースの構成
タスクの作成 をクリックします。
タスク構成ページで、ソースおよび宛先データベースを構成します。
ソースデータベースのパラメーター
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS タスクの名前です。DTS が自動的に名前を生成しますが、識別しやすいように意味のある名前を指定することを推奨します。名前は一意である必要はありません。 |
| 既存の接続の選択 | ドロップダウンリストから登録済みのデータベースインスタンスを選択するか、手動で接続を構成します。DMS コンソールでは、DMS データベースインスタンスの選択 から選択します。 |
| データベースタイプ | TiDB を選択します。 |
| 接続方法 | TiDB データベースのデプロイ場所に基づいて接続タイプを選択します。本例では Self-managed Database on ECS を使用します。その他の接続タイプの場合は、対応する「事前準備」を完了してください。 |
| インスタンスリージョン | TiDB データベースが配置されているリージョンです。 |
| ECS インスタンス ID | TiDB データベースを実行している Elastic Compute Service (ECS) インスタンスの ID です。 |
| ポート番号 | TiDB データベースのサービスポートです。デフォルト値:4000。 |
| データベースアカウント | TiDB データベースのアカウントです。 |
| データベースパスワード | TiDB データベースアカウントのパスワードです。 |
| 増分データの移行 | 増分データを移行する場合は、はいアラート通知設定 を選択し、Kafka クラスターの情報を入力してください。「Kafka クラスターのパラメーター」をご参照ください。 |
宛先データベースのパラメーター
| パラメーター | 説明 |
|---|---|
| 既存の接続の選択 | ドロップダウンリストから登録済みのデータベースインスタンスを選択するか、手動で接続を構成します。DMS コンソールでは、DMS データベースインスタンスの選択 から選択します。 |
| データベースタイプ | PolarDB for MySQL を選択します。 |
| 接続方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | 宛先 PolarDB for MySQL クラスターが配置されているリージョンです。 |
| Alibaba Cloud アカウント間でのデータ複製 | 現在の Alibaba Cloud アカウント下のデータベースインスタンスを使用する場合は、いいえ を選択します。 |
| PolarDB クラスター ID | 宛先 PolarDB for MySQL クラスターの ID を選択します。 |
| データベースアカウント | 宛先 PolarDB for MySQL クラスターのアカウントです。 |
| データベースパスワード | 宛先 PolarDB for MySQL クラスターのアカウントのパスワードです。 |
| 暗号化 | 接続を暗号化するかどうか。SSL 暗号化の詳細については、「SSL 暗号化の設定」をご参照ください。 |
ステップ 3:接続のテスト
ページ下部の 接続のテストと続行 をクリックします。DTS サーバーの CIDR ブロック ダイアログボックスで、接続のテスト をクリックします。
DTS サーバーの CIDR ブロックが、ソースおよびターゲットデータベースのセキュリティ設定に追加されていることを確認してください。詳細については、「DTS サーバーの CIDR ブロックをセキュリティ設定に追加する」をご参照ください。
ステップ 4:移行オブジェクトの構成
オブジェクトの構成 ページで、以下のパラメーターを設定します。
移行タイプおよび競合処理
| パラメーター | 説明 |
|---|---|
| 移行タイプ | ニーズに応じて移行タイプを選択します。・スキーマ移行 + 完全なデータ移行:スキーマおよび既存のデータのみを移行します。・スキーマ移行 + 完全なデータ移行 + 増分データ移行:移行中の変更もキャプチャすることで、ダウンタイムを最小限に抑えます。 説明 スキーマ移行 をスキップする場合は、ターゲットデータベースおよびテーブルを手動で作成し、選択されたオブジェクト でオブジェクト名マッピングを有効化してください。また、増分データ移行 をスキップする場合は、データ整合性を維持するため、移行中にソースデータベースへの書き込みを避けてください。 |
| 競合テーブルの処理モード | ・事前チェックおよびエラー報告(デフォルト):宛先にソースと同名のテーブルが存在する場合、事前チェックが失敗します。競合テーブルの名前を変更するには、「オブジェクト名マッピング」をご利用ください。・エラーを無視して続行:名前競合に関する事前チェックをスキップします。 警告 このオプションはデータの不整合を引き起こすリスクがあります。完全移行では、DTS が競合レコードをスキップします。増分移行では、DTS がそれらを上書きします。スキーマが異なる場合、特定の列のみが移行されるか、タスクが失敗する可能性があります。 |
| 宛先インスタンスにおけるオブジェクト名の大文字小文字 | 宛先でのデータベース名、テーブル名、および列名の大文字小文字の設定を制御します。デフォルト: [DTS デフォルトポリシー]。詳細については、「宛先インスタンスでのオブジェクト名の大文字小文字の設定」をご参照ください。 |
オブジェクトの選択
| パラメーター | 説明 |
|---|---|
| 移行元オブジェクト | 移行するテーブルまたはデータベースを選択します。 |
| 選択済みオブジェクト | オブジェクトを右クリックして名前を変更できます。「単一オブジェクトの名前をマップする」をご参照ください。一括編集 をクリックすると、複数のオブジェクトを一度に名前変更できます。「複数のオブジェクト名を一度にマップする」をご参照ください。テーブルを右クリックして、WHERE フィルター条件を設定できます。 説明 オブジェクトの名前を変更すると、依存オブジェクトが移行されなくなる場合があります。 説明 |
次へ:高度な設定 をクリックします。
高度な設定
| パラメーター | 説明 |
|---|---|
| ターゲットデータベースのエンジンタイプの選択 | ターゲットデータベースのストレージエンジン:InnoDB(デフォルト)またはX-Engine(オンライントランザクション処理(OLTP)ワークロード向け)。 |
| 接続失敗時の再試行時間 | タスク開始後に DTS が接続失敗を再試行する時間を設定します。範囲:10~1,440 分。デフォルト:720。30 分を超える値を設定することを推奨します。この期間内に接続が復旧した場合はタスクが再開され、そうでない場合はタスクは失敗します。 説明 複数のタスクで同一のソースまたはターゲットデータベースを共有している場合、最も最近設定された値が有効になります。DTS は再試行時間中もインスタンスに対して課金されます。 |
| その他の問題発生時の再試行時間 | DTS が失敗した DDL または DML 操作を再試行する時間を設定します。範囲:1~1,440 分。デフォルト:10。10 分を超える値を設定することを推奨します。 重要 この値は接続失敗時の再試行時間よりも小さくする必要があります。 |
| 完全なデータ移行時のスロットリングの有効化 | 完全なデータ移行中のリソース使用量を制限します。ソースデータベースへの秒間クエリ数(QPS)、完全なデータ移行の RPS、および完全移行時のデータ移行速度(MB/s)を設定します。完全なデータ移行が選択されている場合のみ利用可能です。 |
| 増分データ移行時のスロットリングの有効化 | 増分データ移行中のリソース使用量を制限します。増分データ移行の RPSおよび増分移行時のデータ移行速度(MB/s)を設定します。増分データ移行が選択されている場合のみ利用可能です。 |
| 環境タグ | 移行インスタンスを識別するためのオプションタグです。 |
| ETL の設定 | 抽出・変換・書き出し(ETL)を有効にするかどうかを設定します。はいETL とはデータ移行またはデータ同期タスクでの ETL 設定を選択すると、データ処理文を入力できます。詳細については、「」および「」をご参照ください。 |
| モニタリングとアラート | タスクのアラートを設定するかどうかを指定します。はいDTS タスク作成時のモニタリングとアラートの設定を選択すると、アラートのしきい値と通知先連絡先を設定できます。詳細については、「」をご参照ください。 |
データ検証を設定するには、[次のステップ:データ検証] をクリックします。詳細については、「データ検証タスクを設定する」をご参照ください。
ステップ 5:事前チェックの実行
このタスクの API パラメーターをプレビューするには、次へ:タスク設定の保存と事前チェック の上にポインターを置き、OpenAPI パラメーターのプレビュー をクリックします。
次へ:タスク設定の保存と事前チェック をクリックします。
DTS は移行を開始する前に事前チェックを実行します。事前チェックが成功した場合にのみ、タスクが開始されます。
事前チェックで失敗した項目については、詳細の表示 をクリックして原因を診断し、問題を解決した後、再度事前チェックを実行してください。
警告項目については、無視できない警告の場合は問題を修正して事前チェックを再実行してください。無視可能な警告の場合は、警告の詳細の確認 をクリックし、その後 無視 > OK > 再び事前チェック をクリックしてください。
ステップ 6:インスタンスの購入および開始
成功率 が 100 % に達したら、次へ:インスタンスの購入 をクリックします。
インスタンスの購入 ページで、インスタンスクラスを構成します。
| パラメーター | 説明 |
|---|---|
| [リソースグループ] | 移行インスタンスのリソースグループです。デフォルト:[デフォルト リソースグループ]。詳細については、「Resource Management とは |
| [インスタンスクラス] | インスタンスクラスは移行速度を決定します。詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。 |
Data Transmission Service(従量課金)利用規約 のチェックボックスをオンにして、規約を読み、同意してください。
購入して開始 をクリックし、その後 OK をクリックします。
タスクは データ移行 ページに表示されます。そこで進行状況を監視してください。
Kafka クラスターのパラメーター
増分データの移行 を はい に設定した場合に、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| Kafka クラスタータイプ | Kafka クラスターのデプロイ場所に基づく接続タイプです。本例では Self-managed Database on ECS を使用します。Express Connect、VPN Gateway、または Smart Access Gateway を選択した場合は、接続済み VPC も選択し、ドメイン名または IP を入力してください。 |
| Kafka データソースコンポーネント | 構成済みの増分収集方法に応じて選択します:TiDB データベースのデフォルトのバイナリログ形式を使用します。(TiDB Binlog)または TiCDC Canal-JSON 形式を使用します。(TiCDC)。 |
| ECS インスタンス ID | Kafka クラスターを実行している ECS インスタンスの ID です。 |
| ポート番号 | Kafka クラスターのサービスポートです。 |
| Kafka クラスターのアカウント | Kafka クラスターのユーザー名です。認証が有効でない場合は空白のままにしてください。 |
| Kafka クラスターのパスワード | Kafka クラスターのパスワードです。認証が有効でない場合は空白のままにしてください。 |
| Kafka バージョン | Kafka クラスターのバージョンです。バージョンが 1.0 以降の場合は、1.0 を選択してください。 |
| 暗号化 | セキュリティ要件に応じて、暗号化なし または SCRAM-SHA-256 を選択してください。 |
| トピック | 増分データを含むトピックです。 |