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

Amazon Aurora MySQL からTiDB Cloudに一括移行する

このドキュメントでは、 TiDB Cloudコンソールのインポート ツールを使用して、Amazon Aurora MySQL からTiDB Cloudにデータを一括移行する方法について説明します。

TiDB Cloudコンソールでインポート タスクを作成する方法を学ぶ

データをインポートするには、次の手順を実行します。

  1. [**アクティブなクラスター]**ページに移動します。

  2. ターゲットクラスタの領域を見つけて、領域の右上隅にある [データのインポート] をクリックします。 [データ インポート タスク]ページが表示されます。

    ヒント:

    または、[アクティブなクラスター] ページでターゲットクラスタの名前をクリックし、右上隅にある [データのインポート] をクリックすることもできます。

  3. Amazon S3 バケットを作成し、ソース データ ファイルを準備する方法を学びますに従ってソース データを準備します。データの準備部分で、さまざまなデータ形式の長所と短所を確認できます。

  4. ソース データの仕様に従って、 Data Source TypeBucket URL 、およびData Formatフィールドに入力します。

  5. ターゲット クラスタ[ユーザー名]フィールドと [パスワード] フィールドに入力します。

  6. クロスアカウント アクセスを構成する方法を学ぶに従って、クロスアカウント アクセス用のバケット ポリシーとロールを作成します。

  7. [**インポート]**をクリックします。

    データベース リソースの消費に関する警告メッセージが表示されます。

  8. [**確認]**をクリックします。

    TiDB Cloudは、指定されたバケット URL のデータにアクセスできるかどうかの検証を開始します。検証が完了して成功すると、インポート タスクが自動的に開始されます。 AccessDeniedエラーが発生した場合は、 S3 からのデータ インポート中のアクセス拒否エラーのトラブルシューティングを参照してください。

ノート:

タスクが失敗した場合は、 不完全なデータをクリーンアップする方法を学ぶを参照してください。

Amazon S3 バケットを作成し、ソース データ ファイルを準備する方法を学びます

データを準備するには、次の 2 つのオプションから 1 つを選択できます。

事前チェックと準備

ノート:

現在、2 TB を超えるデータをインポートすることはお勧めしません。

移行を開始する前に、次の事前チェックと準備を行う必要があります。

十分な空き容量を確保する

TiDBクラスタの空き容量がデータのサイズよりも大きいことを確認してください。各 TiKV ノードに 600 GB の空き容量を確保することをお勧めします。需要を満たすために、さらに TiKV ノードを追加できます。

データベースの照合順序セットの設定を確認してください

現在、TiDB はutf8_general_ciutf8mb4_general_ciの照合順序のみをサポートしています。データベースの照合順序設定を確認するには、 Auroraに接続された MySQL ターミナルで次のコマンドを実行します。

select * from ((select table_schema, table_name, column_name, collation_name from information_schema.columns where character_set_name is not null) union all (select table_schema, table_name, null, table_collation from information_schema.tables)) x where table_schema not in ('performance_schema', 'mysql', 'information_schema') and collation_name not in ('utf8_bin', 'utf8mb4_bin', 'ascii_bin', 'latin1_bin', 'binary', 'utf8_general_ci', 'utf8mb4_general_ci');

結果は次のとおりです。

Empty set (0.04 sec)

TiDB が文字セットまたは照合順序をサポートしていない場合は、サポートされている型に変換することを検討してください。詳細については、 文字セットと照合順序を参照してください。

オプション 1: Dumplingを使用してソース データ ファイルを準備する

次のデータ エクスポート タスクを実行するには、EC2 を準備する必要があります。追加料金を避けるために、 Auroraと S3 を同じネットワークで実行することをお勧めします。

  1. Dumplingを EC2 にインストールします。

    curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
    source ~/.bash_profile
    tiup install dumpling 
    

    上記のコマンドでは、 ~/.bash_profileをプロファイル ファイルのパスに変更する必要があります。

  2. Dumplingに S3 を書き込むための書き込み権限を付与します。

    ノート:

    IAMロールを EC2 に割り当てている場合は、アクセス キーとセキュリティ キーの構成をスキップして、この EC2 でDumplingを直接実行できます。

    環境内の AWS アカウントのアクセス キーとセキュリティ キーを使用して、書き込み権限を付与できます。データを準備するための特定のキー ペアを作成し、準備が完了したらすぐにアクセス キーを無効にします。

    export AWS_ACCESS_KEY_ID=AccessKeyID
    export AWS_SECRET_ACCESS_KEY=SecretKey
    
  3. ソース データベースを S3 にバックアップします。

    Dumplingを使用して、Amazon Auroraからデータをエクスポートします。環境に基づいて、山括弧 (>) 内の内容を置き換えてから、次のコマンドを実行します。データのエクスポート時にフィルター規則を使用する場合は、 テーブル フィルターを参照してください。

    export_username="<Aurora username>"
    export_password="<Aurora password>"
    export_endpoint="<the endpoint for Amazon Aurora MySQL>"
    # You will use the s3 url when you create importing task
    backup_dir="s3://<bucket name>/<backup dir>"
    s3_bucket_region="<bueckt_region>"
    
    # Use `tiup -- dumpling` instead if "flag needs an argument: 'h' in -h" is prompted for TiUP versions earlier than v1.8
    tiup dumpling \
    -u "$export_username" \
    -p "$export_password" \
    -P 3306 \
    -h "$export_endpoint" \
    --filetype sql \
    --threads 8 \
    -o "$backup_dir" \
    --consistency="none" \
    --s3.region="$s3_bucket_region" \
    -r 200000 \
    -F 256MiB
    
  4. TiDB Cloudのデータ インポート タスク パネルで、データ形式としてTiDB Dumplingを選択します。

オプション 2: Amazon Auroraスナップショットを使用してソース データ ファイルを準備する

データベースのスキーマをバックアップし、 TiDB Cloudで復元する

Auroraからデータを移行するには、データベースのスキーマをバックアップする必要があります。

  1. MySQL クライアントをインストールします。

    yum install mysql -y
    
  2. データベースのスキーマをバックアップします。

    export_username="<Aurora username>"
    export_endpoint="<Aurora endpoint>"
    export_database="<Database to export>"
    
    mysqldump -h ${export_endpoint} -u ${export_username} -p --ssl-mode=DISABLED -d${export_database} >db.sql
    
  3. データベースのスキーマをTiDB Cloudにインポートします。

    dest_endpoint="<TiDB Cloud connect endpoint>"
    dest_username="<TiDB Cloud username>"
    dest_database="<Database to restore>"
    
    mysql -u ${dest_username} -h ${dest_endpoint} -P ${dest_port_number} -p -D${dest_database}<db.sql
    
  4. TiDB Cloudのデータ インポート タスク パネルで、 Aurora Backup SnapshotData Formatとして選択します。

スナップショットを作成して S3 にエクスポートする

  1. Amazon RDS コンソールから [スナップショット] を選択し、[スナップショットの取得] をクリックして手動スナップショットを作成します。

  2. [**スナップショット名]**の下の空白を埋めます。 [スナップショットを撮る]クリックします。スナップショットの作成が完了すると、スナップショットがスナップショット テーブルの下に表示されます。

  3. 取得したスナップショットを選択し、[アクション] をクリックします。ドロップダウン ボックスで、[ Amazon S3 にエクスポート]クリックします。

  4. [エクスポート識別子] の下の空白を埋めます。

  5. エクスポートするデータの量を選択します。このガイドでは、すべてが選択されています。データベースのどの部分をエクスポートする必要があるかを決定するために識別子を使用する部分を選択することもできます。

  6. スナップショットを保存する S3 バケットを選択します。セキュリティ上の懸念から、新しいバケットを作成してデータを保存できます。 TiDBクラスタと同じリージョンでバケットを使用することをお勧めします。リージョン間でデータをダウンロードすると、追加のネットワーク コストが発生する可能性があります。

  7. S3 バケットへの書き込みアクセスを許可する適切なIAMロールを選択します。後でスナップショットをTiDB Cloudにインポートするときに使用するため、このロールをメモしておきます。

  8. 適切な AWS KMS キーを選択し、 IAMロールが KMS キー ユーザーに既に追加されていることを確認します。役割を追加するには、KSM サービスを選択し、キーを選択して、[追加] をクリックします。

  9. [ **Amazon S3 のエクスポート]**をクリックします。タスク テーブルで進行状況を確認できます。

  10. タスク テーブルから、宛先バケットを記録します (たとえば、 s3://snapshot-bucket/snapshot-samples-1 )。

クロスアカウント アクセスを構成する方法を学ぶ

TiDB Cloudクラスタと S3 バケットは、別の AWS アカウントにあります。 TiDB Cloudクラスタが S3 バケット内のソース データ ファイルにアクセスできるようにするには、Amazon S3 へのクロスアカウント アクセスを構成する必要があります。詳細については、 Amazon S3 アクセスの構成を参照してください。

完了すると、クロスアカウントのポリシーとロールが作成されます。その後、 TiDB Cloudのデータ インポート タスク パネルで構成を続行できます。

フィルター ルールの設定方法を確認する

テーブル フィルタードキュメントを参照してください。

不完全なデータをクリーンアップする方法を学ぶ

要件を再度確認できます。すべての問題が解決したら、不完全なデータベースを削除して、インポート プロセスを再開できます。