Upgrade to Pro — share decks privately, control downloads, hide ads and more …

運用中タイトルでも移行できる!!ゲーム業界初AuroraからTiDBへのゲームデータ移行の舞台裏

Avatar for altplus Inc. altplus Inc.
June 04, 2025
220

 運用中タイトルでも移行できる!!ゲーム業界初AuroraからTiDBへのゲームデータ移行の舞台裏

2025年5月30日に開催された「TiDB GAME DAY2025」(運営:PingCAP)で登壇した際の資料です。

運用6年目のとある音ゲープロジェクトで、AuroraからTiDBへの移行事例について発表しました。
移行の背景やTiDBを採用した理由、具体的な移行方法について紹介しています。
また、TiDB運用の最適化、コネクションプーリングに関する課題、移行時の調整や手順についても触れています。

シャーディングされたDBの統合や、全環境をTiDBに載せ替えるという大きなチャレンジがありましたが、
事前検証を重ねながら進めた移行プロセスの実例と、そこで得られた知見についてお話ししました!!

Avatar for altplus Inc.

altplus Inc.

June 04, 2025
Tweet

Transcript

  1. © 2025 AltPlus Inc. フルボイス・ヴィジュアルノベルプロジェクト始動 8 アース・スターノベル 10周年夏祭り 
 にてアプリ内容について公開予定


    
 ①アプリ内容の紹介 
 ②主要キャストの登壇 
 ③キャストによるミニ朗読劇の開催 
 
 詳しくはQRコードもしくは以下URLまで
 https://www.es-novel.jp/special/10th/ 
 <作品概要> 原  作 :夾竹桃(きょうちくとう) イラスト :平沢下戸 漫  画 :沢田一 原作ノベル:1巻~18巻発売中 漫画作品 :1巻~17巻発売中 あらすじ : 主人公は農業高校の女子高生! 農業高校に通う歴史好き女子高生、綾小路静子はある日の学 校の帰り道、突如戦国時代へとタイムスリップしてしまう。 目の前に現われたのは――憧れの織田信長!? 信長の兵に捕らえられ、咄嗟に「農業で才を示す」と約束し てしまった静子は、尾張国の農業改革に乗り出すことになり …!? ⒸKyouchikutou/Hirasawa Geco 2025年7月19日(土)開催 『戦国小町苦労譚』小説のフルボイス・ヴィジュアルノベルアプリ開発決定! 
 累計発行部数300万部を超える大ヒット作品『戦国小町苦労譚』初の フルボイスによるヴィジュアルノベルアプリケーションが開発決定いたしました!! 『戦国小町苦労譚』は、夾竹桃先生による原作をもとにアース・スター エンターテイメントより 小説およびコミカライズとして長年にわたり展開されてきた大ヒット作品です。
  2. © 2025 AltPlus Inc. オルトプラスについて:こんなことやってますーー!! 9 • 音ゲー(リズムゲーム) • オンラインクレーンゲーム

    • 麻雀エンジン作って売ったり • 海外タイトルをローカライズ配信(開発中) プロダクトの例 「自社パブリッシング・受託開発・共同開発」などなど ソーシャルゲームの「企画、開発及び運営」など
  3. © 2025 AltPlus Inc. TiDB導入の背景 16 ユーザーIDが 1-10000のみ対象 ユーザーIDが 10001-20000のみ対象

    ユーザーIDが 20001以降対象 シャーディング戦略としてRange Shardingを導入 (Hash Shardingは移行が必要なため不採用) リリース時 運用中盤 新規流入
  4. © 2025 AltPlus Inc. TiDB導入の背景 17 古参ユーザーが多いため リソース使用の割合は 中程度 最もアクティブなユーザー

    が多いためリソース使用 割合が最も多い 新規ユーザーのリソース 使用割合は小程度だが、 今後増加する見込み 但し、Range Shardingにより、 クラスター間のリソース使用の偏りが問題となる リソース(中) リソース(大) リソース(小) リリース時 運用中盤 新規流入
  5. © 2025 AltPlus Inc. TiDB導入の背景 20 • コストカット • シャーディングの統合

    • 柔軟なリソース調整 TiDBを導入することで下記実現できました!!
  6. © 2025 AltPlus Inc. 自己紹介 24 株式会社オルトプラス 技術部/副部長 Hiromu Kusumoto

    楠元 大夢 2022年11月にオルトプラスに入社 現在は音ゲープロジェクトにおいて、サーバーサイドのプロジェ クトリーダーを務めています。スケジュール調整や他部署とのや り取り調整が主な担当業務ですが、 CS調査や集計など開発以 外の業務はひと通り対応しています。
  7. © 2025 AltPlus Inc. プロジェクト視点で見極めたTiDB導入の決断:①基本動作に問題がないこと 30 • TiDB接続確認 ◦ Ruby

    on Railsのライブラリ接続 • API実行確認 ◦ 主要なデータ取得や更新系APIが意図通り動作 • 課金確認 ◦ 課金によるアイテム付与や通貨増減 確認ポイントの例
  8. © 2025 AltPlus Inc. プロジェクト視点で見極めたTiDB導入の決断:②パフォーマンスに不安がないこと 34 • API応答時間確認 ◦ 通常時およびイベント時相当のリクエストで、

    ユーザー体感に支障ない応答時間であること • 同時接続数への耐性確認 ◦ 想定ピーク時の同時接続数で処理を継続できること • 負荷分散確認 ◦ スケールアウトを行うことで負荷が安定すること 確認ポイントの例 負荷試験ツールは「Locust」を使用
  9. © 2025 AltPlus Inc. [補足]TiDBのコネクションプーリングの問題 37 • Railsのコネクションプーリングにより、 アプリサーバーとの接続はすでに確立された状態 •

    スケールアウトしても新ノードには接続されない • Rails側にタイムアウト設定がないため、 接続の再確立が行われない 結果として既存ノードにアクセスが集中
  10. © 2025 AltPlus Inc. [補足]TiDBのコネクションプーリングの問題 38 ・・・ TiDB server TiDB

    server TiDB server 接続はすでに 確立された状態 TiDB server TiDB server 接続が確立されているため Railsから新ノードに接続されない スケール アウト
  11. © 2025 AltPlus Inc. [補足]TiDBのコネクションプーリングの問題:解決(TiDBスケールアウト) 39 ・・・ TiDB server TiDB

    server TiDB server TiDB server TiDB server ・・・ ②スケールイン ①スケールアウト ①APPサーバーをスケールアウトすることで新ノードに接続 ②不要なサーバーはスケールインすることで対応する
  12. © 2025 AltPlus Inc. プロジェクト視点で見極めたTiDB導入の決断:③時間内で無理なく移行できること 42 • リハーサルによる作業時間の測定 ◦ 本番同等のデータ量・構成で移行作業を再現し、

    各工程の所要時間を計測 ◦ 作業全体が時間内に収まることを確認 • 手順の明文化と共有 ◦ 作業手順をドキュメント化 ◦ 関係者全員にスケジュールを事前展開 確認ポイントの例
  13. © 2025 AltPlus Inc. [補足]定期メンテナンス内に納めるための工夫 44 メンテナンス開始 メンテナンス明け 定期メンテナンスの時間軸 メンテナンス時間は変更しない想定での計画

    本番移行の時間軸 スケジュールは カツカツな状態 定期メンテナンスの影響を避 けつつ、本番移行を並行して 実施するための調整を行った 影響はこのくらい(Dumpling)
  14. © 2025 AltPlus Inc. 安定稼働のための改善施策と今後の課題 49 • TiDBのスケールイン ◦ スケールインは影響があるので難しい

    ◦ 今の所はメンテ時に対応するなど • TiPloxyを使うかどうか? ◦ TiKVのスケール中のTiDB接続断にも 役にたつので要検討 今後の課題:TiDBのコネクションプーリング
  15. © 2025 AltPlus Inc. [APPチーム編] まとめ 50 TiDB移行における重視点と対応策をプロジェクト目線で紹介しました • 基本動作・パフォーマンスを事前に検証

    • 移行は並列スケジュールで効率化 • 移行後は負荷対策を最優先で対応 • 今後はコネクションプーリング運用を改善検討
  16. © 2025 AltPlus Inc. 自己紹介 52 株式会社オルトプラス 技術部/エンジニアマネージャー kazushige uratani

    浦谷 和茂 2023年6月にオルトプラスに入社 プロジェクトを横断的に見ていますー!! SRE見ていますー!! 入社してからずっと「 TiDBの推し活」をしてました(笑) TiDBのユーザーコミュニティー「 TiUG」も盛り上げ Ti!!
  17. © 2025 AltPlus Inc. 移行手順と確認ポイント 80 ツール 説明 Dumpling (エクスポート)

    テーブル定義やバックアップを取得する場合に使用 出力ファイルは「SQL、CSV」、出力先は「ローカル、S3」 分割サイズは256MiBが推奨 TiDB Lightning (インポート) TiDBクラスターへの初期データインポートで使用 インポートモードは「Logical、Physical」 ・Logical:TiDB経由(QUERYを実行して登録) ・Physical:TiKV経由(KVペアを直接登録) sync-diff-inspector (整合性チェック) 移行データを比較する場合に使用(チェックサム) テーブル定義或いはデータ不一致の場合は修正用のQUERYを出力 検討した結果下記ツールを採用
  18. © 2025 AltPlus Inc. 移行手順と確認ポイント dev-altplus(123456789000) 移行のイメージ(全体像) dumpling tidb-lightning tiup

    db_user db_admin シャーディング 統合 db_admin db_user_01 db_user_02 シャーディング sync_diff_inspector 82      t   tidb cloud
  19. © 2025 AltPlus Inc. 移行手順と確認ポイント 83 dev-altplus(123456789000) [準備]プライベートエンドポイント接続設定 AWS PrivateLink

    TiDB Cloudでは、PrivateLinkを使用したプライベートエンドポイント は必須ではありませんが推奨されています      t   tidb cloud
  20. © 2025 AltPlus Inc. [補足]PrivateLinkが推奨される理由 84 • TiDB Cloudで推奨される安全な接続方法 •

    通信がパブリックインターネットを経由しない ◦ AWSネットワーク内で完結できる • ネットワーク分離とセキュリティの強化が可能 パブリックエンドポイントは簡易ですが、 セキュリティ要件が高い環境ではPrivateLinkの利用が望ましいです!!
  21. © 2025 AltPlus Inc. [補足]PrivateLinkの選定理由 85 VPC Peeringも似た接続方法なのですが・・・ VPC PeeringはTiDB

    Cloud Serverless非対応 のためPrivateLink一択になりました!! TiCDCを使ってクロスリージョン同期を行う際にVPC Peeringを利用
  22. © 2025 AltPlus Inc. 移行手順と確認ポイント 86 dev-altplus(123456789000) [準備]TiDBテーブル定義変更対応 db_user db_admin

    db_admin tidb-nodata.dmp 書き換え (例:AUTO_INCREMENT の削除など) db_user_01 db_user_02 シャーディングされたテーブル定義は「01」のみを取得し、 TiDB向けにdmpファイルを書き換えてリストアを実施する      t   tidb cloud
  23. © 2025 AltPlus Inc. 移行手順と確認ポイント 88 • S3 ◦ Dumpling出力ファイルの格納場所

    ◦ TiDBからのアクセス権限 • 移行ツールのインストール スナップショットと同様に設定します [準備]その他準備するもの
  24. © 2025 AltPlus Inc. 移行手順と確認ポイント:Dumpling 90 dev-altplus(123456789000) Dumplingを使用したエクスポート dumpling tidb-lightning

    tiup db_admin db_user_01 db_user_02 非シャーディング用 パラメータで取得 シャーディング01用 パラメータで取得 シャーディング02用 パラメータで取得 シャーディングと 非シャーディングのデータを S3にエクスポート
  25. © 2025 AltPlus Inc. 移行手順と確認ポイント:Dumpling 91 ENVIRONMENT="development" HOST_NAME="localhost" USER="root" PASS="*******"

    PORT=3306 DATABASE="db_admin" FILE_TYPE="sql" THREADS=2 ROWS=70000 CONSISTENCY="lock" OUTPUT="s3://bucket/prefix/" 移行元(MySQL or Aurora)の環境を設定(今回の例では未使用) 移行元(先)のデータベース(今回の例では未使用) ファイルタイプはsqlとcsvで変わらないのでsql 移行元のコア数に合わせる テーブル内のデータを並列に処理してエクスポート速度を向上 明示的に指定していますがautoでよいです S3の出力先(S3のprefixまで) パラメータの例(非シャーディング) 移行元の接続情報 (パスワードは隠蔽する: 環境変数やParameter Store)
  26. © 2025 AltPlus Inc. 移行手順と確認ポイント:Dumpling 92 ENVIRONMENT="development" HOST_NAME="localhost" USER="root" PASS="*******"

    PORT=3306 SOURCE_DATABASE="db_user_01" TARGET_DATABASE="db_user" FILTER_TABLE_01="${SOURCE_DATABASE}.user_*" FILTER_TABLE_02="${SOURCE_DATABASE}.other_table" FILE_TYPE="sql" THREADS=2 ROWS=70000 CONSISTENCY="lock" OUTPUT="s3://bucket/prefix/" OUTPUT_FILENAME_TEMPLATE="${TARGET_DATABASE}.{{.Table}}_1_{{.Index}}" パラメータの例(シャーディング) 移行元(SOURCE)と移行先(TARGET)のデータベース 移行先はシャーディング統合のデータベース エクスポート対象のテーブルを個別に指定する 「*」を使うことで、指定したパターンに一致 するテーブルをまとめて対象にできます (例:user_*でuser_01, user_abcなど) シャーディングを統合する上で最も重要なパラメータ
  27. © 2025 AltPlus Inc. 移行手順と確認ポイント:Dumpling 95 tiup dumpling --no-schemas -u${USER}

    -p${PASS} -P${PORT} -h${HOST_NAME} --filter ${FILTER_TABLE_01} --filter ${FILTER_TABLE_02} --filetype ${FILE_TYPE} --threads ${THREADS} --rows ${ROWS} --consistency ${CONSISTENCY} --output ${OUTPUT} -F256MiB --output-filename-template ${OUTPUT_FILENAME_TEMPLATE} Dumpling実行の例 非シャーディング・シャーディングそれぞれ実施します!! 環境変数に指定した値をパラメータとして設定して実行すればOKです 今回の例では 非シャーディングは不要 データのみ(スキーマは取得しない) 推奨値
  28. © 2025 AltPlus Inc. 移行手順と確認ポイント:Dumpling 96 [OK] dump data successfully,

    dumpling will exit now [NG] 1回もエラーになったことがない 初回にAccess deniedになったくらい
  29. © 2025 AltPlus Inc. 移行手順と確認ポイント:TiDB Lightning 100 TiDB Lightningを使用したインポート dev-altplus(123456789000)

    dumpling tidb-lightning tiup db_user db_admin TOML設定 TOMLを設定しtidb-lightningでインポート (S3にエクスポートされたファイルはTOMLのpattern設定 によってシャーディング・非シャーディングを問わず 自動的にパースされるように設定しています)      t   tidb cloud
  30. © 2025 AltPlus Inc. [補足]TiDB CloudでのTiDB Lightning使用時の注意点 102 [Physicalモードが使えない理由]  PhysicalモードではPDの情報が必要ですが、

     TiDB CloudではPDにアクセスできず、  TOMLに記載することができないため 使用可能なモードはLogicalモードのみ
  31. © 2025 AltPlus Inc. 移行手順と確認ポイント:TiDB Lightning 103 TOMLの例:tidb-lightning.toml [lightning] level

    = "info" file = "/home/ec2-user/.tiup/tidb-lightning.log" [checkpoint] enable = false schema = "tidb_lightning_checkpoint" [tikv-importer] backend = "tidb" [[mydumper.files]] pattern = '(?i)^(?:[^/]*/)*([a-z0-9\-_]+)\.([a-z0-9\-_]+?)(?:_[0-9]+)*[-_](\d+)\.(sql)$' schema = '$1' table = '$2' key = '$3' type = '$4' Logicalモード ログ出力情報 リトライメインなので チェックポイントは外す (設定不要) インポートする上で最も重要なパラメータ
  32. © 2025 AltPlus Inc. 移行手順と確認ポイント:TiDB Lightning 104 [[mydumper.files]] pattern =

    '(?i)^(?:[^/]*/)*([a-z0-9\-_]+)\.([a-z0-9\-_]+?)(?:_[0-9]+)*[-_](\d+)\.(sql)$' schema = '$1' table = '$2' key = '$3' type = '$4' mydumper.filesの動きについて Dumplingでエクスポートされたファイル名から、 「スキーマ(データベース)・テーブル ・チャンクID・ファイルタイプ」をパースする パースされた内容を展開する
  33. © 2025 AltPlus Inc. schema = 'db_admin' table = 'admin_table'

    key = '0000000050000' type = 'sql' schema = 'db_user' table = 'user_table' key = '0000000070000' type = 'sql' 移行手順と確認ポイント:TiDB Lightning 105 pattern = '(?i)^(?:[^/]*/)*([a-z0-9\-_]+)\.([a-z0-9\-_]+?)(?:_[0-9]+)*[-_](\d+)\.(sql)$' ファイルのパース 非シャーディング:db_admin.admin_table-0000000050000.sql シャーディング :db_user.user_table_1_0000000070000.sql schemaとtableが 取得できればOK
  34. © 2025 AltPlus Inc. 移行手順と確認ポイント:TiDB Lightning 106 tiup tidb-lightning -tidb-user

    {} -tidb-password {} -tidb-port {} -tidb-host {} -d s3://bucket/prefix/ -config tidb-lightning.toml TiDB Lightning実行の例 上記パラメータを設定して実行すればOKです DumplingしたS3URL TOMLファイル
  35. © 2025 AltPlus Inc. [補足]TiDB Lightningエラーの例:MEDIUMBLOBインポート時(Logicalモード) 108 Error 8025 (HY000):

    entry too large, the max entry size is 6291456 SET GLOBAL tidb_txn_entry_size_limit = 10485760; MEDIUMBLOB以上のサイズは 「TiDBの単一行の最大storageサイズはデフォルトで6MiB」であるため、 「txn-entry-size-limit」の上限を上げる必要がある v7.6.0以上
  36. © 2025 AltPlus Inc. [補足]TiDB Cloudでのインポート 109 TiDB LightningをTiDB Cloudに対して実行する場合は

    Logicalモードしか使えないため、 行サイズ制限の影響を受けることがあります Physicalモードが使えるTiDB Cloudコンソール からのインポートをおすすめします!!
  37. © 2025 AltPlus Inc. [補足]TiDB Cloudでのインポート:TiDB Cloudコンソール 110 Schemaはあるので「No」 ファイルタイプ

    :SQL オルトプラスの例 S3URLを設定 ロールのARNを設定 上記全て入力すると「Connect」が活性化 ボタン押下時にOKであればインポートの画面へ
  38. © 2025 AltPlus Inc. [補足]TiDB Cloudコンソールでのインポート時の注意点 111 パースに失敗する例:{{.Table}}.1_{{.Index}} TiDB LightningはTOMLの「pattern」に正規表現を使えるため

    柔軟なファイル指定が可能です。 一方で、TiDB Cloudコンソールではフォーマットが合わないと パースに失敗してインポートされないため注意が必要です 「.(ピリオド)」だと空振りするので 「_(アンダースコア)」にする必要があります
  39. © 2025 AltPlus Inc. 移行手順と確認ポイント:sync_diff_inspector dev-altplus(123456789000) sync_diff_inspectorを使用したデータ整合性チェック db_user db_admin db_admin

    db_user_02 db_user_01 非シャーディング シャーディング sync_diff_inspector 113 インポート前後のデータを比較し、差分を検出 (非シャーディングとシャーディングで分けて実行する必要があります)      t   tidb cloud
  40. © 2025 AltPlus Inc. [data-sources] [data-sources.xxx1] ・・・ [data-sources.xxxN] [routes] [routes.rule1]

    ・・・ [routes.ruleN] [task] target-configs = ["config1", ・・・“configN”] [table-configs.config1] ・・・ [table-configs.configN] 114 TOMLにおけるテーブルごとの設定項目の整理 接続先(移行元・移行先) の情報を記載 移行元・移行先の指定、比較対象 のデータベースやテーブルなど、 比較タスク全体の設定を記載 テーブル名やスキーマ名の マッピングルールを記載 特定のテーブルに対して個別の比較条件や キーなどを設定([task]のオプション) 移行手順と確認ポイント:sync_diff_inspector
  41. © 2025 AltPlus Inc. 115 TOMLの例(非シャーディング) ######################### Global config #########################

    check-thread-count = 2 export-fix-sql = true check-struct-only = false skip-non-existing-table = false ######################### Datasource config ######################### [data-sources] [data-sources.aurora] host = "aurora-xxx.rds.amazonaws.com" port = 3306 [data-sources.tidb] host = "privatelink-xxx.clusters.tidb-cloud.com" port = 4000 整合性チェックを行うスレッド数(コア数に合わせる) 差分が検出された場合に、修正用のSQLをエクスポート テーブル構造とデータ両方をチェック 全テーブルが揃っている前提でチェック 移行元(Aurora)の接続情報 (ユーザーやパスワードも設定する) 移行先(TiDB)の接続情報 (ユーザーやパスワードも設定する) 移行手順と確認ポイント:sync_diff_inspector
  42. © 2025 AltPlus Inc. ######################### task config ######################### [task] output-dir

    = "/home/ec2-user/.tiup/sync_diff_inspector_output" source-instances = ["aurora"] target-instance = "tidb" target-check-tables = ["db_admin.*"] target-configs = ["config"] ######################### Table config ######################### [table-configs.config] target-tables = ["db_admin.admin_table"] index-fields = ["id"] 移行手順と確認ポイント:sync_diff_inspector 116 TOMLの例(非シャーディング) 移行元と先のテーブルを比較 移行の結果や差分が 検出された場合の出力場所 比較対象テーブルの詳細設定(必要に応じて設定) 例)db_admin.admin_tableのidカラムを キーとして明示的に指定して比較を実施
  43. © 2025 AltPlus Inc. ######################### Global config ############# ######################### Datasource

    config ######### [data-sources] route-rulesを指定して、[routes] のマッピング設定を追加 ######################### Routes ################# [routes] ######################### task config ############## [task] 移行手順と確認ポイント:sync_diff_inspector 117 TOMLの例(シャーディング) テーブル名やスキーマ名を 移行元と移行先でマッピング するための設定を追加
  44. © 2025 AltPlus Inc. [routes.rule-aurora1-1] schema-pattern = "db_user_[01-02]" table-pattern =

    "user_aaa" target-schema = "db_user" target-table = "user_aaa" [routes.rule-aurora1-2] schema-pattern = "db_user_[01-02]" table-pattern = "user_bbb" target-schema = "db_user" target-table = "user_bbb" ######################### Datasource config ####### [data-sources] [data-sources.aurora] host = "aurora-xxx.rds.amazonaws.com" route-rules = ["rule-aurora1-1", "rule-aurora1-2"] [data-sources.tidb] host = "privatelink-xxx.clusters.tidb-cloud.com" ######################### Routes ############### [routes] [routes.rule-aurora1-1] [routes.rule-aurora1-2] ######################### task config ############ [task] source-instances = ["aurora"] target-instance = "tidb" target-check-tables = ["user_aaa", "user_bbb"] 移行手順と確認ポイント:sync_diff_inspector 118 TOMLの例(シャーディング) マッピング 青:移行元、赤:移行先、緑:マッピングルール
  45. © 2025 AltPlus Inc. 移行手順と確認ポイント:sync_diff_inspector dev-altplus(123456789000) db_user_01 ・user_aaa ・user_bbb 119

    db_user_02 ・user_aaa ・user_bbb TOMLのマッピングイメージ(シャーディング) db_user ・user_aaa ・user_bbb      t   tidb cloud
  46. © 2025 AltPlus Inc. [routes.rule-aurora1-1] schema-pattern = "db_user_01" table-pattern =

    "user_aaa" target-schema = "db_user" target-table = "user_aaa" [routes.rule-aurora1-2] schema-pattern = "db_user_01" table-pattern = "user_bbb" target-schema = "db_user" target-table = "user_bbb" [routes.rule-aurora2-1] schema-pattern = "db_user_02" table-pattern = "user_aaa" target-schema = "db_user" target-table = "user_aaa" [routes.rule-aurora2-2] schema-pattern = "db_user_02" table-pattern = "user_bbb" target-schema = "db_user" target-table = "user_bbb" ######################### Datasource config ### [data-sources] [data-sources.aurora1] host = "aurora-xxx01.rds.amazonaws.com"  route-rules = ["rule-aurora1-1", "rule-aurora1-2" [data-sources.aurora2] host = "aurora-xxx02.rds.amazonaws.com"  route-rules = ["rule-aurora2-1", "rule-aurora2-2" [data-sources.tidb] host = "privatelink-xxx.clusters.tidb-cloud.com" ######################### Routes ### [routes] [routes.rule-aurora1-1] [routes.rule-aurora1-2] [routes.rule-aurora2-1] [routes.rule-aurora2-2] ######################### task config ### [task] source-instances = ["aurora1", "aurora2"] target-instance = "tidb" target-check-tables = ["user_aaa", "user_bbb"] 移行手順と確認ポイント:sync_diff_inspector 120 TOMLの例(複数台のシャーディング) マッピング
  47. © 2025 AltPlus Inc. 移行手順と確認ポイント:sync_diff_inspector dev-altplus(123456789000) db_user_01 ・user_aaa ・user_bbb 121

    TOMLのマッピングイメージ(複数台のシャーディング) db_user ・user_aaa ・user_bbb db_user_02 ・user_aaa ・user_bbb      t   tidb cloud
  48. © 2025 AltPlus Inc. [補足]sync_diff_inspectorのシャーディング用TOMLの作成 122 テーブルリスト user_aaa user_bbb ・・・

    ・・・ ・・・ user_zzz route-rules = ["rule-xxx-n-n"] [routes.rule-aurora-xxx] schema-pattern = "xxx" table-pattern = "xxx" target-schema = "xxx" target-table = "xxx" target-check-tables = ["xxx"] 1つのテーブルで生成する情報 (リスト分繰り返す) 書き込む TOMLを手動で作成するのは手間がかかるため、 Pythonなどのアルゴリズムによる生成が効率的です!! テンプレート
  49. © 2025 AltPlus Inc. 移行手順と確認ポイント:sync_diff_inspector 123 sync_diff_inspector --config=sync_diff_inspector.toml sync_diff_inspector実行の例 例)シャーディングの場合は

    sync_diff_inspector_sharding.toml の様な名前で作成する 非シャーディングとシャーディングの両方を実施します それぞれ専用のTOMLを作成してLightningで実行すればOKです!!
  50. © 2025 AltPlus Inc. 移行手順と確認ポイント:sync_diff_inspector 124 [OK] A total of

    777 table have been compared and all are equal. [NG] The data of `database`.table` is not equal the structure of・・・
  51. © 2025 AltPlus Inc. 本番移行 prod-altplus(987654321000) 移行のイメージ(全体像) tiup db_admin db_user_01

    db_user_02 db_user_03 db_admin db_user dumpling sync_diff_inspector TiDB Cloud コンソール :Import 126 tidb cloudd
  52. © 2025 AltPlus Inc. 本番移行 127 • tidb-manager環境構築 ◦ dumpling

    ▪ パラメータ設定 ◦ sync_diff_inspector ▪ TOML設定 • TiDB Cloud Dedicated作成 ◦ テーブル作成 ◦ ユーザー作成 • PrivateLink作成 • TiDB CloudのS3アクセス設定 • mysql_config_editor設定 • データ整合性チェック ◦ sync_diff_inspector • エクスポート実行 ◦ Dumpling • インポート実行 ◦ TiDB Cloudコンソール 青:本番移行前に実施可能、赤:本番移行時
  53. © 2025 AltPlus Inc. 本番移行 snapshotから復元してリハーサル環境を構築 db_admin db_user sync_diff_inspector TiDB

    Cloud コンソール :Import prod-altplus(987654321000) tiup dumpling db_admin db_user_01 db_user_02 db_user_03 129 tidb cloudd snapshotから復元
  54. © 2025 AltPlus Inc. 本番移行 131 リハーサル 環境構築 本番移行 本番環境

    の手順を確立 時間計測 時間計測+ 問題ないこと 時間計測+ 問題ないこと リハーサルでは処理時間の計測や問題が発生しないことを確認!! 「再現性のあるリハーサル」を実施することで、 本番も安心して迎えられる状態をつくることがベストです
  55. © 2025 AltPlus Inc. 本番移行 132 移行PJ始動 リハーサル 環境構築 DEV環境

    の手順を確立 QA環境 の手順を確立 STG環境 の手順を確立 REV環境 の手順を確立 その前段としてまずは確実な手順の構築が重要と考えました!! 本番を想定したリハーサルを行うためにも、 各環境での手順を先に固めてからリハーサルに臨みました!!
  56. © 2025 AltPlus Inc. 本番移行 134 リハーサル通りに「Dumpling」 →dump data successfully,

    dumpling will exit now リハーサル通りに「コンソールからインポート」 →
  57. © 2025 AltPlus Inc. [データ移行編] まとめ 139 • まずはやってみることが大事 •

    手順を確立することでスムーズな移行が可能 • 再現性のあるリハーサルの重要性 • 本番時に何かあっても慌てないくらい準備する AuroraからTiDBへの移行事例の紹介を行いました!!