Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

altplus_音ゲーアプリだけにAuroraからTiDBへ「テンポよく」移行!!_CEDEC...

 altplus_音ゲーアプリだけにAuroraからTiDBへ「テンポよく」移行!!_CEDEC2025

2025年7月22日(火)〜24日(木)に開催された「CEDEC2025」で登壇した際の資料です。
運用6年目のとある音ゲープロジェクトで、AuroraからTiDBへの移行事例について発表しました。
移行に至った背景やTiDBを採用した理由、移行方法について紹介しています。
また、移行後に発生したドタバタ劇や、TiDB Cloud APIによる運用効率化についても触れています。
シャーディングされたDBの統合や、全環境をTiDBに載せ替えるという大きなチャレンジがありましたが、
事前検証を重ねながら進めた移行プロセスの実例と、そこで得られた知見についてお話ししました!!

Avatar for altplus Inc.

altplus Inc.

December 08, 2025
Tweet

More Decks by altplus Inc.

Other Decks in Technology

Transcript

  1. © 2025 AltPlus Inc. 自己紹介 4 株式会社オルトプラス 技術部/エンジニアマネージャー kazushige uratani

    浦谷 和茂 2023年6月にオルトプラスに入社 「笑顔あふれるセカイを増やす」というパーパスをモットーに、エンジ ニアマネージャー/テックスペシャリスト/ SREリーダーとして、楽しく 働ける環境づくりに日々取り組んでいます!!
  2. © 2025 AltPlus Inc. TiDBについて:TiDBのプロダクトの種類 12 TiDBには2つのプロダクトがありますが、 オルトプラスではTiDB Cloud(AWS)を使用 •

    TiDB(セルフマネージド型) ◦ ソフトウェアとして提供(TiUP) • TiDB Cloud(フルマネージド型) ◦ クラウドプロバイダー上で提供
  3. © 2025 AltPlus Inc. TiDBについて:TiDB Cloudの特徴 13 • マルチテナントアーキテクチャ •

    最大5つのクラスターを一定の 使用量まで無料で利用可能 (Free Cluster) • 6つ目のクラスターを作成する 場合は、クレジットカードを 追加する必要がある (Scalable Cluster) • シングルテナントアーキテクチャ • 商用向け有料プランのみ利用可能 • 柔軟なスケールアウトやスケール アップが可能 • パフォーマンスや安定性が求めら れるシステム向け TiDB Cloud Dedicated TiDB Cloud Serverless
  4. © 2025 AltPlus Inc. TiDBについて:オルトプラスでのTiDB Cloudの使い方 14 TiDB Cloud Dedicated

    TiDB Cloud Serverless 開発環境などの小規模な環境で使用 最初に作成した5枠が無料(一定の使 用量まで)になるため、使用頻度が高 い環境をこの無料枠に割り当てている DEV QA STG REV PROD 本番環境などのミッションクリティカ ルな環境で使用。レビュー環境は本番 適用前の最終確認用としてDedicated 上での動作確認に利用している
  5. © 2025 AltPlus Inc. TiDBについて:使用しているTiDB Cloudのバージョン 15 TiDB Cloud Dedicated

    TiDB Cloud Serverless v7.5.2 v8.1.2 TiDB=2、TiKV=3(通常時) をベースにイベントやピークタイム に合わせてスケールアウト (アップ)を実施
  6. © 2025 AltPlus Inc. TiDBについて:TiDB Cloud Dedicated 16 TiDBとTiKVの運用のみ 考えるだけでよい

    (必要に応じてTiFlash) PDはPingCAPさんの管理下にあるため 運用コストも含めて完全にお任せできる
  7. © 2025 AltPlus Inc. TiDB導入の背景 20 ユーザーIDが 1-10000のみ対象 ユーザーIDが 10001-20000のみ対象

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

    が多いためリソース使用 の割合が最も高い 現時点でのリソース使用 の割合は最も低いが 今後増加する見込み 但し、Range Shardingにより、 クラスター間のリソース使用の偏りが問題となる リソース(中) リソース(高) リソース(低) リリース時 運用中盤 新規流入
  9. © 2025 AltPlus Inc. データ移行のための準備と実行:①移行計画 30 社内への説明① 社内でTiDBは認知されていたが下記の様に説明 ※TiDB Cloud

    ServerelessでFull-text search(beta)機能が利用可能に!!(詳細は2025年5月13日のリリースノートを参照)
  10. © 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント 37 ツール 説明 Dumpling (エクスポート)

    テーブル定義やバックアップを取得する際に使用 出力ファイルは「SQL、CSV」、出力先は「ローカル、S3」、 分割サイズは256MiBが推奨 sync-diff-inspector (整合性チェック) 移行データを比較する用途で使用(チェックサム) テーブル定義或いはデータ不一致の場合は修正用のQUERYを出力 検討した結果下記ツールを採用(セルフマネージド) https://docs.pingcap.com/tidb/stable/migration-tools/
  11. © 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント 38 ツール 説明 TiDB Cloud

    コンソール (インポート) TiDBクラスターへの初期データインポートで使用 Dumplingでエクスポートしたファイルを、 TiDB Cloudのインポート機能を使用してClusterに取り込む Physicalモードで、TiKVに直接データ(KVペア)を登録 インポート処理のみTiDB Cloudのマネージド機能を使用 https://docs.pingcap.com/tidbcloud/import-sample-data/
  12. © 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) 移行のイメージ(全体像) tiup db_admin db_user_01

    db_user_02 db_user_03 ①dumpling ②TiDB Cloud コンソール :Import 39 tidb cloudd db_admin db_user ③sync_diff_inspector env
  13. © 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) [準備]プライベートエンドポイント接続設定 41 tidb cloudd

    AWS PrivateLink TiDB Cloudでは、PrivateLinkを使用したプライベートエンドポイント は必須ではありませんが推奨されています
  14. © 2025 AltPlus Inc. [補足]PrivateLinkの選定理由 43 VPC Peeringも似た接続方法なのですが・・・ VPC PeeringはTiDB

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

    44 tidb-nodata.dmp 書き換え (例:AUTO_INCREMENT の削除など) db_admin tidb cloudd db_admin db_user シャーディングされたテーブル定義は「01」のみを取得し、 TiDB向けにdmpファイルを書き換えてリストアを実施する シャーディング統合
  16. © 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) TiDB Cloud コンソール :Import

    46 tidb cloudd [準備]TiDBツール データチェックツール インストール インポートツール (TiDB Cluster作成後 に使用可能) sync_diff_inspector tiup dumpling エクスポートツール インストール
  17. © 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) [準備]S3バケット tiup dumpling 47

    tidb cloudd AWS Identity and Access Management (IAM) IAMポリシー IAMロール アタッチ エクスポート・インポート時に S3へのアクセス許可が必要!! S3へのアクセス許可 TiDB Cloud コンソール :Import エクスポート インポート
  18. © 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) [実行]Dumplingを使用したエクスポート tiup db_admin db_user_01

    db_user_02 db_user_03 dumpling 48 シャーディングと 非シャーディングのデータを 各DB単位でS3にエクスポート 非シャーディング用 パラメータで取得 シャーディング対象の各 DBを個別にパラメータを 指定して取得 エクスポート
  19. © 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) [実行]TiDB Cloudコンソールを使用したインポート TiDB Cloud

    コンソール :Import 49 tidb cloudd db_admin db_user TiDB Cloudコンソールを使用して 直感的なインポートを実行できます インポート実施前に 「S3URL」や「ロールのARN」を 控えておく必要があります インポート 
  20. © 2025 AltPlus Inc. [補足]TiDB Cloudでのインポート:TiDB Cloudコンソール 50 Schemaはあるので「No」 ファイルタイプ

    :SQL オルトプラスの例 S3URLを設定 ロールのARNを設定 上記全て入力すると「Connect」が活性化 ボタン押下時にOKであればインポートの画面へ
  21. © 2025 AltPlus Inc. [補足]エクスポート→インポート(シャーディング統合)イメージ 51 db_admin db_user db_admin.admin_table-0000000000000.sql db_admin

    db_user_01 db_user_02 db_user_03 シャーディング統合 非シャーディング 同一テーブルがS3にアップロードされる際、 重複しないようにシャーディング番号を入れる db_user.user_table_1_0000000000000.sql db_user.user_table_2_0000000000000.sql db_user.user_table_3_0000000000000.sql
  22. © 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) [実行]sync_diff_inspectorを使用したデータ整合性チェック db_user_01 db_user_02 db_user_03

    52 tidb cloudd インポート前後のデータを比較し、差分を検出 (非シャーディングとシャーディングで分けて実行する必要があります) 差分を検出 db_admin db_user db_admin sync_diff_inspector 非シャーディング シャーディング
  23. © 2025 AltPlus Inc. データ移行のための準備と実行:③本番移行 prod-altplus(987654321000) 移行のイメージ(全体像) tiup db_admin db_user_01

    db_user_02 db_user_03 dumpling TiDB Cloud コンソール :Import 54 tidb cloudd db_admin db_user sync_diff_inspector
  24. © 2025 AltPlus Inc. データ移行のための準備と実行:③本番移行 55 • tidb-manager環境構築 ◦ dumpling

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

    Cloud コンソール :Import 57 tidb cloudd db_admin db_user sync_diff_inspector db_admin db_user_01 db_user_02 db_user_03 snapshotから復元
  26. © 2025 AltPlus Inc. データ移行のための準備と実行:③本番移行 59 リハーサル 環境構築 本番移行 本番環境

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

    の手順を確立 QA環境 の手順を確立 STG環境 の手順を確立 REV環境 の手順を確立 その前段としてまずは確実な手順の構築が重要と考えました!! 本番を想定したリハーサルを行うためにも、 各環境での手順を先に固めてからリハーサルに臨みました!!
  28. © 2025 AltPlus Inc. 79 今からスケールインすれば少しでも コストを減らすことができるのではないか!! リソース使用に合わせて スケールできる TiDBのメリットを

    活かす時が来たぞと!! 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話
  29. © 2025 AltPlus Inc. 80 見せてやる!! これがTiDBの 真の力だ!! まさかこの数時間後にガクガクブルブルが 止まらなくなるとは・・・

    運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話
  30. © 2025 AltPlus Inc. 時間 81 このあたりで スケールイン開始 このあたりで スケールイン完了(予測)

    このあたりで スケールアウト開始 ユーザーの流入前にスケールインが完了するので 流入前のタイミングでスケールアウトしよう!! 当初の予定 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話 このあたりから徐々に ユーザーが流入
  31. © 2025 AltPlus Inc. 時間 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話 82 このペースだとユーザーの流入前に スケールインが終わらなそうだ。。。 このあたりで

    スケールイン開始 スケールインの終了が予想と違うかもと焦りが・・・ 現実① このあたりで スケールイン完了しそう このあたりから徐々に ユーザーが流入
  32. © 2025 AltPlus Inc. 時間 84 現実② このあたりで スケールイン開始 PingCAPさんに助けを求めました😭

    その結果スケールインが止まりました!! PingCAPさんにヘルプ要請!! スケールイン停止 祈りタイム 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話 このあたりから徐々に ユーザーが流入
  33. © 2025 AltPlus Inc. 86 Region Region Region Region Region

    Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region tikv-0 tikv-1 tikv-2 tikv-3 tikv-4 tikv-5 tikv0-2に負荷が集中する 移動を停止中 tikv3-5はサポートのみ 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話
  34. © 2025 AltPlus Inc. 87 何とかピークタイムを無事乗り切りました!! その後、スケールインを対応いただきました!! PingCAPさん ありがとう!! もう2度と判断を

    見誤りません 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話
  35. © 2025 AltPlus Inc. [補足]スケールインは一気にしない方がよい 88 tikv-0 tikv-1 tikv-2 tikv-0

    tikv-1 tikv-2 tikv-3 tikv-4 tikv-5 tikv-0 tikv-1 tikv-2 tikv-3 tikv-4 tikv-5 tikv-6 tikv-7 tikv-8 Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region Region 段階を踏んで実施 段階を踏んで実施 一気にスケールイン 今回の見誤りは一気にスケールしたことが原因 段階を踏んで実施するとよいでしょう!!
  36. © 2025 AltPlus Inc. TiDB Cloud APIでの効率化 91 TiDB Cloud

    API(β版)を使用した 自動化を行いました!! TiDB Cloud Dedicatedの操作をコンソールを 介さず実行できるためとても便利です!!
  37. © 2025 AltPlus Inc. TiDB Cloud APIでの効率化 93 • REST形式で提供されるAPI

    ◦ コンソールの主要操作をコードで実行可能 • 主要な操作 ◦ クラスターの作成・削除 ◦ スケーリング ◦ バックアップおよびリストア ◦ インポート(Physical) TiDB Cloud APIの特徴
  38. © 2025 AltPlus Inc. TiDB Cloud APIでの効率化 94 • API

    Key ◦ TiDB Cloudコンソールから作成 ▪ キーの管理はParameter Storeなど • スクリプトの準備 ◦ ドキュメントを確認して実装する ▪ パラメータはJSON 準備するもの https://docs.pingcap.com/tidbcloud/api/v1beta/#section/Overview
  39. © 2025 AltPlus Inc. TiDB Cloud APIでの効率化 95 • 言語:Python

    • API ◦ スケールアウト/イン ◦ スケールアップ/ダウン ◦ インポート ◦ その他(クラスター情報取得) オルトプラスの例
  40. © 2025 AltPlus Inc. TiDB Cloud APIでの効率化 tidb cloud  スケールアウトの例

    db_admin db_user prod-altplus(987654321000) 96 Amazon EventBridge Scheduler Lambda function AWS Lambda AWS Systems Manager Parameter Store cluster-modify.py アクティブユーザーの 流入に合わせて起動 APIキー取得 API実行 スケールアウト TiDB=5 TiKV=9
  41. © 2025 AltPlus Inc. TiDB Cloud APIでの効率化 • スケールアウトはアクティブな時間帯の直前で実行 •

    スケールインはバックアップ後に実行(念の為) 97 時間 アクティブな時間帯   非アクティブな時間帯 非アクティブな時間帯 バ ッ ク ア ッ プ Modifying Active Modifying Active スケールインAPI実行 スケールアウトAPI実行 リバランス オルトプラスでの運用例(毎日実行:TiKV) ピークタイム
  42. © 2025 AltPlus Inc. TiDB Cloud APIでの効率化 99 今後もTiDB Cloud

    APIを活用し、 さらなる効率化と自動化を 推進していきます!! (いつまでβ版なんだろう・・・が気になる所)
  43. © 2025 AltPlus Inc. まとめ 100 移行ツールと運用ノウハウを「テンポよく」共有 • TiDB移行で使用したツールや簡単な流れを紹介 •

    再現性ある構成とリハーサルで移行を成功 • 本番トラブルにも耐えるTiDBの柔軟性 • ゲーム運用に役立つAPIの自動化
  44. © 2025 AltPlus Inc. 当初検討していた構成 103 Aurora Cluster01 Aurora Cluster02

    Aurora Cluster03 db_admin db_user_01 db_user_02 db_user_03 ①dumpling db_admin db_user ②TiDB Cloud コンソール:Import メンテナンス中にDMの完全同期を確認 sync_diff_inspectorで問題なければ、 TiCDCを導入して切り戻し対応を行う ⑤TiCDC ④sync_diff_inspector ③DM(差分適用) [メンテナンス作業] 「①dumpling〜③DM(差分適用)」は運用中に実施
  45. © 2025 AltPlus Inc. 検討した結果下記ツールは見送り 104 ツール 説明/見送りの理由 DM MySQL互換のデータベースからTiDBへのデータ移行ツール

    ・フルデータ移行と増分データレプリケーションの両方をサポート ・シャーディングされたデータのマージにも対応 [見送りの理由] 当初は無停止での移行も検討していましたが実際には十分なメンテナンス時間 を確保できたため、ダウンタイムを極力抑える必要はなく見送りました TiCDC TiDBの変更データをキャプチャしてリアルタイムにレプリケートするツール [見送りの理由] 当初は切り戻しも想定していましたが、最終的にAuroraへの切り戻しは行わず TiDBでの運用に踏み切る方針となったため見送りました
  46. © 2025 AltPlus Inc. TiKVの「スケールアウト」について(TiDB Cloud Dedicated) 106 Leader Leader

    Follower Leader Follower Region Leader TiKVノード 新規追加 Follower Follower Follower Leader Follower Leader Leader Leader Follower Follower Leader Leader Follower Leader Follower Region Leader Follower Follower Leader Leader Follower Leader Follower Region Leader Follower Follower Leader(Region) から先に移動を 開始する 全てのLeaderの Region移動後に 「Active」となる 残りのFollowerの Region移動後に リバランスが完了 スケールアウト を開始する Modifying Modifying Active Active
  47. © 2025 AltPlus Inc. TiKVの「スケールイン」について(TiDB Cloud Dedicated) 107 Follower Follower

    Follower Leader Follower Region Leader Leader Leader スケールイン開始 Leader(Region) から先に移動する Follower Follower Follower Leader Follower Region Leader Leader Leader 全てのLeaderの Regionを移動して も「Modifying」 Modifying Follower Follower Follower Leader Follower Region Leader Leader Leader 全てのRegion を移動後に リバランスが完了 Follower Follower Follower Leader Follower Leader Leader Leader TiKVノード削除後に 「Active」となる Active TiKVノード削除 Modifying Modifying
  48. © 2025 AltPlus Inc. TiKVの「スケールアウト・イン」について(TiDB Cloud Dedicated) 108 • スケールアウト

    ◦ Leader(Raft)の移動が完了後にActiveになる ▪ その後、FollowerのRegionをリバランスする • スケールイン ◦ 全てのRegion移動が完了後にActiveになる ▪ この時点でリバランスも完了している Activeになるまでコンソールで操作が出来ないので注意が必要!!