データ移行を使用して MySQL 互換データベースをTiDB Cloudに移行する

このドキュメントでは、 TiDB Cloudコンソールのデータ移行機能を使用して、クラウド プロバイダー (Amazon Aurora MySQL または Amazon Relational Database Service (RDS)) またはオンプレミスの MySQL 互換データベースからTiDB Cloudにデータを移行する方法について説明します。

この機能は、データベースとその進行中の変更をTiDB Cloudに移行するのに役立ちます (同じリージョンまたは複数のリージョンで)。 DumplingやTiDB Lightningなどのツールを必要とするソリューションと比較して、この機能は使いやすいです。ソース データベースからデータを手動でダンプしてからTiDB Cloudにインポートする必要はありません。代わりに、ソース データベースから直接TiDB Cloudに一度にデータを移行できます。

制限事項

  • データ移行機能は、 Dedicated Tierクラスターでのみ使用できます。

  • データ移行機能は、2022 年 11 月 9 日以降に次のリージョンで作成されたプロジェクトのクラスターでのみ使用できます。プロジェクトがその日付より前に作成された場合、またはクラスターが別のリージョンにある場合、この機能はクラスターで使用できません。データ移行タブは、 TiDB Cloudコンソールのクラスター概要ページに表示されません。

    • AWS オレゴン (us-west-2)
    • AWS 北バージニア (us-east-1)
    • AWS ムンバイ (ap-south-1)
    • AWS シンガポール (ap-southeast-1)
    • AWS 東京 (ap-northeast-1)
    • AWS フランクフルト (eu-central-1)
    • AWS ソウル (ap-northeast-2)
  • 組織ごとに最大 200 の移行ジョブを作成できます。さらに移行ジョブを作成するには、次のことを行う必要がありサポート チケットを提出する

  • 移行するすべてのデータベースを選択した場合でも、システム データベースは除外され、 TiDB Cloudに移行されません。つまり、 mysqlinformation_schemainformation_schema 、およびsysは、この機能を使用して移行されません。

  • 完全なデータの移行中に、移行対象のテーブルが重複したキーを持つターゲット データベースに既に存在する場合、重複したキーは置き換えられます。

  • 増分データ移行中に、移行対象のテーブルが重複したキーを持つターゲット データベースに既に存在する場合、エラーが報告され、移行が中断されます。この状況では、アップストリーム データが正確かどうかを確認する必要があります。はいの場合は、移行ジョブの [再起動] ボタンをクリックすると、移行ジョブによって、競合するダウンストリーム レコードがアップストリーム レコードに置き換えられます。

  • TiDB Cloudでクラスターを削除すると、そのクラスター内のすべての移行ジョブが自動的に削除され、回復できなくなります。

  • 増分レプリケーション (進行中の変更をクラスターに移行する) 中に、移行ジョブが突然のエラーから回復した場合、セーフ モードが 60 秒間開くことがあります。セーフ モードでは、 INSERTステートメントはREPLACEとして複製され、 UPDATEステートメントはDELETEおよびREPLACEとして複製されます。その後、これらのトランザクションがダウンストリーム クラスターに複製され、突然のエラー中のすべてのデータがダウンストリーム クラスターにスムーズに移行されたことを確認します。主キーまたは null 以外の一意のインデックスを持たないアップストリーム テーブルの場合、データがダウンストリームに繰り返し挿入される可能性があるため、一部のデータがダウンストリーム クラスターで複製される可能性があります。

  • データ移行を使用する場合は、データセットのサイズを 1 TiB 未満に保つことをお勧めします。データセットのサイズが 1 TiB を超える場合、仕様が制限されているため、完全なデータ移行には長い時間がかかります。

  • 次のシナリオでは、移行ジョブに 24 時間以上かかる場合は、ソース データベースの binlog を消去しないで、Data Migration が増分レプリケーション用の連続した binlog を取得できるようにします。

    • 完全なデータ移行中。
    • 完全なデータ移行が完了した後、増分データ移行が初めて開始されるとき、レイテンシーは 0 ミリ秒ではありません。

前提条件

移行を実行する前に、データ ソースを確認し、アップストリーム データベースとダウンストリーム データベースの権限を準備し、ネットワーク接続を設定する必要があります。

データソースとバージョンがサポートされていることを確認してください

データ移行では、次のデータ ソースとバージョンがサポートされています。

  • MySQL 5.6、5.7、および 8.0 ローカル インスタンスまたはパブリック クラウド プロバイダー。 MySQL 8.0 はTiDB Cloudまだ実験的段階であり、非互換性の問題がある可能性があることに注意してください。
  • アマゾンAurora(MySQL 5.6 および 5.7)
  • アマゾン RDS (MySQL 5.7)

アップストリーム データベースに必要な権限を付与する

アップストリーム データベースに使用するユーザー名には、次のすべての権限が必要です。

特権範囲
SELECTテーブル
LOCKテーブル
REPLICATION SLAVEグローバル
REPLICATION CLIENTグローバル

たとえば、次のGRANTのステートメントを使用して、対応する権限を付与できます。

GRANT SELECT,LOCK TABLES,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'your_user'@'your_IP_address_of_host'

下流のTiDB Cloudクラスターに必要な権限を付与する

ダウンストリームのTiDB Cloudクラスターに使用するユーザー名には、次の権限が必要です。

特権範囲
CREATEデータベース、テーブル
SELECTテーブル
INSERTテーブル
UPDATEテーブル
DELETEテーブル
ALTERテーブル
DROPデータベース、テーブル
INDEXテーブル
TRUNCATEテーブル

たとえば、次のGRANTのステートメントを実行して、対応する権限を付与できます。

GRANT CREATE,SELECT,INSERT,UPDATE,DELETE,ALTER,TRUNCATE,DROP,INDEX ON *.* TO 'your_user'@'your_IP_address_of_host'

移行ジョブをすばやくテストするには、 TiDB Cloudクラスターのrootアカウントを使用できます。

ネットワーク接続の設定

移行ジョブを作成する前に、接続方法に従ってネットワーク接続をセットアップします。 TiDBクラスタに接続するを参照してください。

バイナリログを有効にする

増分データ移行を実行するには、アップストリーム データベースのバイナリ ログが有効になっていて、バイナリ ログが 24 時間以上保持されていることを確認してください。

ステップ 1:データ移行ページに移動します

  1. TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。

    ヒント:

    複数のプロジェクトがある場合は、[**クラスター]**ページの左側のナビゲーション ペインでターゲット プロジェクトに切り替えることができます。

  2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで [データの移行] をクリックします。

  3. [データ移行] ページで、右上隅にある [移行ジョブの作成] をクリックします。移行ジョブの作成ページが表示されます。

ステップ 2: ソースとターゲットの接続を構成する

[**移行ジョブの作成]**ページで、ソース接続とターゲット接続を構成します。

  1. ジョブ名を入力します。この名前は文字で始まり、60 文字未満である必要があります。文字 (AZ、az)、数字 (0-9)、アンダースコア (_)、およびハイフン (-) を使用できます。

  2. ソース接続プロファイルを入力します。

    • データ ソース: データ ソースの種類。
    • リージョン : データ ソースのリージョン。クラウド データベースにのみ必要です。
    • 接続方法: データ ソースの接続方法。現在、接続方法に応じて、パブリック IP、VPC ピアリング、またはプライベート リンクを選択できます。
    • ホスト名または IP アドレス(パブリック IP および VPC ピアリングの場合): データ ソースのホスト名または IP アドレス。
    • サービス名(Private Link 用): エンドポイント サービス名。
    • Port : データ ソースのポート。
    • Username : データ ソースのユーザー名。
    • パスワード: ユーザー名のパスワード。
    • SSL/TLS : SSL/TLS を有効にする場合は、次のいずれかを含むデータ ソースの証明書をアップロードする必要があります。
      • CA証明書のみ
      • クライアント証明書とクライアント キー
      • CA 証明書、クライアント証明書、およびクライアント キー
  3. ターゲット接続プロファイルを入力します。

    • ユーザー名 : TiDB Cloudのターゲット クラスターのユーザー名を入力します。
    • パスワード: TiDB Cloudユーザー名のパスワードを入力します。
  4. [**接続を検証して次へ]**をクリックして、入力した情報を検証します。

  5. 表示されるメッセージに従って対処してください。

    • パブリック IP または VPC ピアリングを使用する場合は、データ移行サービスの IP アドレスをソース データベースとファイアウォール (存在する場合) の IP アクセス リストに追加する必要があります。
    • Private Link を使用する場合、エンドポイント要求を受け入れるように求められます。 AWS VPC コンソールに移動し、[エンドポイント サービス] をクリックしてエンドポイント要求を受け入れます。

ステップ 3: 移行するオブジェクトを選択する

  1. チェックボックスを選択して、完全データ移行、増分データ移行、またはその両方を選択します。

    ヒント:

    • データをTiDB Cloudに完全に移行するには、完全なデータの移行増分データの移行の両方を選択します。これにより、ソース データベースとターゲット データベース間のデータの一貫性が保証されます。
    • ソース データベースの既存のデータのみをTiDB Cloudに移行するには、[完全なデータの移行] チェックボックスのみを選択します。
  2. [移行するオブジェクトの**選択] ページで、移行**するオブジェクトを選択します。 [すべて] をクリックしてすべてのオブジェクトを選択するか、[カスタマイズ] をクリックしてからオブジェクト名の横にあるチェックボックスをクリックしてオブジェクトを選択します。

    • Allをクリックすると、移行ジョブは既存のデータをソース データベース インスタンス全体からTiDB Cloudに移行し、完全な移行後に進行中の変更をレプリケートします。前の手順で [完全なデータの移行] チェックボックスと [増分データの移行] チェックボックスを選択した場合にのみ発生することに注意してください。

    • [カスタマイズ] をクリックしていくつかのデータベースを選択すると、移行ジョブは既存のデータを移行し、選択したデータベースの進行中の変更をTiDB Cloudにレプリケートします。前の手順で [完全なデータの移行] チェックボックスと [増分データの移行] チェックボックスを選択した場合にのみ発生することに注意してください。

    • [カスタマイズ] をクリックしてデータセット名の下にあるいくつかのテーブルを選択すると、移行ジョブは既存のデータのみを移行し、選択したテーブルの進行中の変更をレプリケートします。後で同じデータベースに作成されたテーブルは移行されません。

  3. [次へ] をクリックします。

ステップ 4: 事前チェック

[事前チェック**]**ページで、事前チェックの結果を表示できます。事前チェックに失敗した場合は、失敗または警告の詳細に従って操作し、再度チェックをクリックして再チェックする必要があります。

一部のチェック項目に警告しかない場合は、リスクを評価し、警告を無視するかどうかを検討できます。すべての警告が無視された場合、移行ジョブは自動的に次のステップに進みます。

事前チェック項目の詳細については、 移行タスクの事前チェックを参照してください。

すべてのチェック項目がPassと表示されたら、[ Next ] をクリックします。

ステップ 5: 仕様を選択して移行を開始する

[**仕様を選択して移行を開始]**ページで、パフォーマンス要件に応じて適切な移行仕様を選択します。仕様の詳細については、 データ移行の仕様を参照してください。

スペックを選択したら、[ Create Job and Start ] をクリックして移行を開始します。

ステップ 6: 移行の進行状況をビューする

移行ジョブが作成されたら、[**移行ジョブの詳細]**ページで移行の進行状況を確認できます。移行の進行状況は、[ステージとステータス]領域に表示されます。

実行中の移行ジョブを一時停止または削除できます。

移行ジョブが失敗した場合は、問題を解決してから再開できます。

どのステータスの移行ジョブも削除できます。

トラブルシューティング

移行中に問題が発生した場合は、次の解決策を参照できます。

  • エラー メッセージ:「移行に必要なバイナリ ログがソース データベースに存在しません。移行が成功するまで、バイナリ ログ ファイルが十分な時間保持されていることを確認してください。」

    このエラーは、移行するバイナリログがクリーンアップされており、新しいタスクを作成することによってのみ復元できることを意味します。

    増分移行に必要なバイナリログが存在することを確認してください。 binlog の期間を延長するには、 expire_logs_daysを構成することをお勧めします。一部の移行ジョブで必要な場合は、バイナリログのクリーンアップにpurge binary logを使用しないでください。

  • エラー メッセージ:「指定されたパラメーターを使用してソース データベースに接続できませんでした。ソース データベースが起動しており、指定されたパラメーターを使用して接続できることを確認してください。」

    このエラーは、ソース データベースへの接続が失敗したことを意味します。ソース・データベースが開始されており、指定されたパラメーターを使用して接続できるかどうかを確認してください。ソース データベースが使用可能であることを確認したら、[再起動] をクリックしてタスクの回復を試みることができます。

  • 移行タスクが中断され、「ドライバー: 接続が正しくありません」または「接続が無効です」というエラーが表示される

    このエラーは、下流の TiDB クラスターへの接続が失敗したことを意味します。ダウンストリームの TiDB クラスターがnormalの状態であり、ジョブで指定されたユーザー名とパスワードで接続できるかどうかを確認します。ダウンストリームの TiDB クラスターが使用可能であることを確認したら、[再起動] をクリックしてタスクの再開を試みることができます。

  • エラー メッセージ:「指定されたユーザーとパスワードを使用して TiDB クラスターに接続できませんでした。TiDBクラスタが起動しており、指定されたユーザーとパスワードを使用して接続できることを確認してください。」

    TiDB クラスターへの接続に失敗しました。 TiDB クラスターがnormalの状態であり、ジョブで指定されたユーザー名とパスワードで接続できるかどうかを確認することをお勧めします。 TiDB クラスターが使用可能であることを確認したら、[再起動] をクリックしてタスクの再開を試みることができます。

  • エラー メッセージ:「TiDB クラスター ストレージが不足しています。TiKV のノード ストレージを増やしてください。」

    TiDB クラスター ストレージが不足しています。 TiKV ノード ストレージを増やすにしてから、[再起動] をクリックしてタスクを再開することをお勧めします。

  • エラー メッセージ:「ソース データベースに接続できませんでした。データベースが使用可能かどうか、または最大接続数に達しているかどうかを確認してください。」

    ソース データベースへの接続に失敗しました。ソースデータベースが起動しているか、データベース接続数が上限に達していないか、ジョブで指定されたパラメーターを使用して接続できるかを確認することをお勧めします。ソース データベースが使用可能であることを確認したら、[再起動] をクリックしてジョブの再開を試みることができます。

エコシステム
TiDB
TiKV
TiSpark
Chaos Mesh
© 2023 PingCAP. All Rights Reserved.