Share
Embed
altplus_音ゲーアプリだけにAuroraからTiDBへ「テンポよく」移行!!_CEDEC2025
2025年7月22日(火)〜24日(木)に開催された「CEDEC2025」で登壇した際の資料です。
運用6年目のとある音ゲープロジェクトで、AuroraからTiDBへの移行事例について発表しました。
移行に至った背景やTiDBを採用した理由、移行方法について紹介しています。
また、移行後に発生したドタバタ劇や、TiDB Cloud APIによる運用効率化についても触れています。
シャーディングされたDBの統合や、全環境をTiDBに載せ替えるという大きなチャレンジがありましたが、
事前検証を重ねながら進めた移行プロセスの実例と、そこで得られた知見についてお話ししました!!
altplus Inc.
December 08, 2025
Transcript
109 slides
-
© 2025 AltPlus Inc. 3 本日のアジェンダ • TiDB導入の背景 • データ移行のための準備と実行
• 運用後のドタバタ劇 • TiDB Cloud APIでの効率化 -
© 2025 AltPlus Inc. 自己紹介 4 株式会社オルトプラス 技術部/エンジニアマネージャー kazushige uratani
浦谷 和茂 2023年6月にオルトプラスに入社 「笑顔あふれるセカイを増やす」というパーパスをモットーに、エンジ ニアマネージャー/テックスペシャリスト/ SREリーダーとして、楽しく 働ける環境づくりに日々取り組んでいます!! -
© 2025 AltPlus Inc. TiDBについて:TiDBのプロダクトの種類 12 TiDBには2つのプロダクトがありますが、 オルトプラスではTiDB Cloud(AWS)を使用 •
TiDB(セルフマネージド型) ◦ ソフトウェアとして提供(TiUP) • TiDB Cloud(フルマネージド型) ◦ クラウドプロバイダー上で提供 -
© 2025 AltPlus Inc. TiDBについて:TiDB Cloudの特徴 13 • マルチテナントアーキテクチャ •
最大5つのクラスターを一定の 使用量まで無料で利用可能 (Free Cluster) • 6つ目のクラスターを作成する 場合は、クレジットカードを 追加する必要がある (Scalable Cluster) • シングルテナントアーキテクチャ • 商用向け有料プランのみ利用可能 • 柔軟なスケールアウトやスケール アップが可能 • パフォーマンスや安定性が求めら れるシステム向け TiDB Cloud Dedicated TiDB Cloud Serverless -
© 2025 AltPlus Inc. TiDBについて:オルトプラスでのTiDB Cloudの使い方 14 TiDB Cloud Dedicated
TiDB Cloud Serverless 開発環境などの小規模な環境で使用 最初に作成した5枠が無料(一定の使 用量まで)になるため、使用頻度が高 い環境をこの無料枠に割り当てている DEV QA STG REV PROD 本番環境などのミッションクリティカ ルな環境で使用。レビュー環境は本番 適用前の最終確認用としてDedicated 上での動作確認に利用している -
© 2025 AltPlus Inc. TiDBについて:使用しているTiDB Cloudのバージョン 15 TiDB Cloud Dedicated
TiDB Cloud Serverless v7.5.2 v8.1.2 TiDB=2、TiKV=3(通常時) をベースにイベントやピークタイム に合わせてスケールアウト (アップ)を実施 -
© 2025 AltPlus Inc. TiDBについて:TiDB Cloud Dedicated 16 TiDBとTiKVの運用のみ 考えるだけでよい
(必要に応じてTiFlash) PDはPingCAPさんの管理下にあるため 運用コストも含めて完全にお任せできる -
© 2025 AltPlus Inc. TiDB導入の背景 20 ユーザーIDが 1-10000のみ対象 ユーザーIDが 10001-20000のみ対象
ユーザーIDが 20001以降対象 リリース時 運用中盤 新規流入 シャーディング戦略としてRange Shardingを導入 (Hash Shardingは移行が必要なため不採用) -
© 2025 AltPlus Inc. TiDB導入の背景 21 古参ユーザーが多いため リソース使用の割合は 中程度 最もアクティブなユーザー
が多いためリソース使用 の割合が最も高い 現時点でのリソース使用 の割合は最も低いが 今後増加する見込み 但し、Range Shardingにより、 クラスター間のリソース使用の偏りが問題となる リソース(中) リソース(高) リソース(低) リリース時 運用中盤 新規流入 -
© 2025 AltPlus Inc. TiDB導入の背景 23 シャーディングの統合 リソースの統合 TiDBの分散機能によりデータと負荷が 自動分散されシャーディングが不要に!!
その結果1つのクラスターで運用できるため、 リソース使用の調整が柔軟に!! -
© 2025 AltPlus Inc. データ移行のための準備と実行:①移行計画 30 社内への説明① 社内でTiDBは認知されていたが下記の様に説明 ※TiDB Cloud
ServerelessでFull-text search(beta)機能が利用可能に!!(詳細は2025年5月13日のリリースノートを参照) -
© 2025 AltPlus Inc. データ移行のための準備と実行:①移行計画 33 本番リリースの目標 5周年前に移行を完了させる!! ◦ 2025年01月〜02月の間
移行スケジュール この時点でやることのスケジュールも決めていました -
© 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント 37 ツール 説明 Dumpling (エクスポート)
テーブル定義やバックアップを取得する際に使用 出力ファイルは「SQL、CSV」、出力先は「ローカル、S3」、 分割サイズは256MiBが推奨 sync-diff-inspector (整合性チェック) 移行データを比較する用途で使用(チェックサム) テーブル定義或いはデータ不一致の場合は修正用のQUERYを出力 検討した結果下記ツールを採用(セルフマネージド) https://docs.pingcap.com/tidb/stable/migration-tools/ -
© 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント 38 ツール 説明 TiDB Cloud
コンソール (インポート) TiDBクラスターへの初期データインポートで使用 Dumplingでエクスポートしたファイルを、 TiDB Cloudのインポート機能を使用してClusterに取り込む Physicalモードで、TiKVに直接データ(KVペア)を登録 インポート処理のみTiDB Cloudのマネージド機能を使用 https://docs.pingcap.com/tidbcloud/import-sample-data/ -
© 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 -
© 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント [準備]TiDBクラスター作成 40 TiDB CloudのOrganizationを作成 tidb
cloudd TiDB Clusterを作成 Organization作成後に「TiDB Cluster」の作成が可能になります -
© 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) [準備]プライベートエンドポイント接続設定 41 tidb cloudd
AWS PrivateLink TiDB Cloudでは、PrivateLinkを使用したプライベートエンドポイント は必須ではありませんが推奨されています -
© 2025 AltPlus Inc. [補足]PrivateLinkの選定理由 43 VPC Peeringも似た接続方法なのですが・・・ VPC PeeringはTiDB
Cloud Serverless非対応 のためPrivateLink一択になりました!! TiCDCを使ってクロスリージョン同期を行う際にVPC Peeringを利用 -
© 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ファイルを書き換えてリストアを実施する シャーディング統合 -
© 2025 AltPlus Inc. [補足]テーブル定義の書き換え Ruby on RailsのTurntableを使用していて、 IDの重複が発生しない設計になっていたため、 AUTO_INCREMENTを削除しました
TiDBで採番の仕組みを使用するなら AUTO_RANDOMに書き換えれば問題ないです 45 -
© 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) TiDB Cloud コンソール :Import
46 tidb cloudd [準備]TiDBツール データチェックツール インストール インポートツール (TiDB Cluster作成後 に使用可能) sync_diff_inspector tiup dumpling エクスポートツール インストール -
© 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 エクスポート インポート -
© 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) [実行]Dumplingを使用したエクスポート tiup db_admin db_user_01
db_user_02 db_user_03 dumpling 48 シャーディングと 非シャーディングのデータを 各DB単位でS3にエクスポート 非シャーディング用 パラメータで取得 シャーディング対象の各 DBを個別にパラメータを 指定して取得 エクスポート -
© 2025 AltPlus Inc. データ移行のための準備と実行:②移行手順と確認ポイント prod-altplus(987654321000) [実行]TiDB Cloudコンソールを使用したインポート TiDB Cloud
コンソール :Import 49 tidb cloudd db_admin db_user TiDB Cloudコンソールを使用して 直感的なインポートを実行できます インポート実施前に 「S3URL」や「ロールのARN」を 控えておく必要があります インポート -
© 2025 AltPlus Inc. [補足]TiDB Cloudでのインポート:TiDB Cloudコンソール 50 Schemaはあるので「No」 ファイルタイプ
:SQL オルトプラスの例 S3URLを設定 ロールのARNを設定 上記全て入力すると「Connect」が活性化 ボタン押下時にOKであればインポートの画面へ -
© 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 -
© 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 非シャーディング シャーディング -
© 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 -
© 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コンソール 青:本番移行前に実施可能、赤:本番移行時 -
© 2025 AltPlus Inc. データ移行のための準備と実行:③本番移行 prod-altplus(987654321000) 本番移行前に実施可能な環境を構築 tiup dumpling TiDB
Cloud コンソール :Import 56 tidb cloudd db_admin db_user sync_diff_inspector env テーブル定義 -
© 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から復元 -
© 2025 AltPlus Inc. データ移行のための準備と実行:③本番移行 59 リハーサル 環境構築 本番移行 本番環境
の手順を確立 時間計測 時間計測+ 問題ないこと 時間計測+ 問題ないこと リハーサルでは処理時間の計測や問題が発生しないことを確認!! 「再現性のあるリハーサル」を実施することで、 本番も安心して迎えられる状態をつくることがベストです -
© 2025 AltPlus Inc. データ移行のための準備と実行:③本番移行 60 移行PJ始動 リハーサル 環境構築 DEV環境
の手順を確立 QA環境 の手順を確立 STG環境 の手順を確立 REV環境 の手順を確立 その前段としてまずは確実な手順の構築が重要と考えました!! 本番を想定したリハーサルを行うためにも、 各環境での手順を先に固めてからリハーサルに臨みました!! -
© 2025 AltPlus Inc. データ移行のための準備と実行:③本番移行 62 リハーサル通りに「Dumpling」 →dump data successfully,
dumpling will exit now リハーサル通りに「コンソールからインポート」 → -
© 2025 AltPlus Inc. 運用後のドタバタ劇:移行直後にスパイクしたけど回避した話 69 しばらくして社内から・・・ メンテ明け10分後 エラーが多めです エラーポップアップ出ました
ちょっと重い気が こんな声が聞こえてきました(幻聴ではない) -
© 2025 AltPlus Inc. 運用後のドタバタ劇:移行直後にスパイクしたけど回避した話 70 TiKVのCPUリソースが結構使われていることを確認 そして・・・ユーザーさんからこんな声が。。。 アプリが重い 問い合わせが来ていますー
通信エラーが表示されてプレイできない 問い合わせが来ていますー -
© 2025 AltPlus Inc. 運用後のドタバタ劇:移行直後にスパイクしたけど回避した話 74 因みにスパイクの原因は、 プレゼント機能のスキャン処理でした。。。 この影響で、EBSのIOPSが 上限に張り付いた状態となっていました
TiKVのスケールアウトによりEBSへの負荷が分散されてボトルネックが解消 -
© 2025 AltPlus Inc. 79 今からスケールインすれば少しでも コストを減らすことができるのではないか!! リソース使用に合わせて スケールできる TiDBのメリットを
活かす時が来たぞと!! 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話 -
© 2025 AltPlus Inc. 80 見せてやる!! これがTiDBの 真の力だ!! まさかこの数時間後にガクガクブルブルが 止まらなくなるとは・・・
運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話 -
© 2025 AltPlus Inc. 時間 81 このあたりで スケールイン開始 このあたりで スケールイン完了(予測)
このあたりで スケールアウト開始 ユーザーの流入前にスケールインが完了するので 流入前のタイミングでスケールアウトしよう!! 当初の予定 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話 このあたりから徐々に ユーザーが流入 -
© 2025 AltPlus Inc. 時間 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話 82 このペースだとユーザーの流入前に スケールインが終わらなそうだ。。。 このあたりで
スケールイン開始 スケールインの終了が予想と違うかもと焦りが・・・ 現実① このあたりで スケールイン完了しそう このあたりから徐々に ユーザーが流入 -
© 2025 AltPlus Inc. 時間 84 現実② このあたりで スケールイン開始 PingCAPさんに助けを求めました😭
その結果スケールインが止まりました!! PingCAPさんにヘルプ要請!! スケールイン停止 祈りタイム 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話 このあたりから徐々に ユーザーが流入 -
© 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はサポートのみ 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話 -
© 2025 AltPlus Inc. 87 何とかピークタイムを無事乗り切りました!! その後、スケールインを対応いただきました!! PingCAPさん ありがとう!! もう2度と判断を
見誤りません 運用後のドタバタ劇:スケールの判断を見誤ってしまいガクガクブルブルが止まらなかった話 -
© 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 段階を踏んで実施 段階を踏んで実施 一気にスケールイン 今回の見誤りは一気にスケールしたことが原因 段階を踏んで実施するとよいでしょう!! -
© 2025 AltPlus Inc. TiDB Cloud APIでの効率化 91 TiDB Cloud
API(β版)を使用した 自動化を行いました!! TiDB Cloud Dedicatedの操作をコンソールを 介さず実行できるためとても便利です!! -
© 2025 AltPlus Inc. TiDB Cloud APIでの効率化 93 • REST形式で提供されるAPI
◦ コンソールの主要操作をコードで実行可能 • 主要な操作 ◦ クラスターの作成・削除 ◦ スケーリング ◦ バックアップおよびリストア ◦ インポート(Physical) TiDB Cloud APIの特徴 -
© 2025 AltPlus Inc. TiDB Cloud APIでの効率化 94 • API
Key ◦ TiDB Cloudコンソールから作成 ▪ キーの管理はParameter Storeなど • スクリプトの準備 ◦ ドキュメントを確認して実装する ▪ パラメータはJSON 準備するもの https://docs.pingcap.com/tidbcloud/api/v1beta/#section/Overview -
© 2025 AltPlus Inc. TiDB Cloud APIでの効率化 95 • 言語:Python
• API ◦ スケールアウト/イン ◦ スケールアップ/ダウン ◦ インポート ◦ その他(クラスター情報取得) オルトプラスの例 -
© 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 -
© 2025 AltPlus Inc. TiDB Cloud APIでの効率化 • スケールアウトはアクティブな時間帯の直前で実行 •
スケールインはバックアップ後に実行(念の為) 97 時間 アクティブな時間帯 非アクティブな時間帯 非アクティブな時間帯 バ ッ ク ア ッ プ Modifying Active Modifying Active スケールインAPI実行 スケールアウトAPI実行 リバランス オルトプラスでの運用例(毎日実行:TiKV) ピークタイム -
© 2025 AltPlus Inc. TiDB Cloud APIでの効率化 通常時やイベント時に関わらず ソーシャルゲームはアクティブな時間帯は大体同じ スケールの予測が付きやすいので、
スケジュールのスケールコントロールで 問題なく対応可能です!! 98 -
© 2025 AltPlus Inc. TiDB Cloud APIでの効率化 99 今後もTiDB Cloud
APIを活用し、 さらなる効率化と自動化を 推進していきます!! (いつまでβ版なんだろう・・・が気になる所) -
© 2025 AltPlus Inc. まとめ 100 移行ツールと運用ノウハウを「テンポよく」共有 • TiDB移行で使用したツールや簡単な流れを紹介 •
再現性ある構成とリハーサルで移行を成功 • 本番トラブルにも耐えるTiDBの柔軟性 • ゲーム運用に役立つAPIの自動化 -
© 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(差分適用)」は運用中に実施 -
© 2025 AltPlus Inc. 検討した結果下記ツールは見送り 104 ツール 説明/見送りの理由 DM MySQL互換のデータベースからTiDBへのデータ移行ツール
・フルデータ移行と増分データレプリケーションの両方をサポート ・シャーディングされたデータのマージにも対応 [見送りの理由] 当初は無停止での移行も検討していましたが実際には十分なメンテナンス時間 を確保できたため、ダウンタイムを極力抑える必要はなく見送りました TiCDC TiDBの変更データをキャプチャしてリアルタイムにレプリケートするツール [見送りの理由] 当初は切り戻しも想定していましたが、最終的にAuroraへの切り戻しは行わず TiDBでの運用に踏み切る方針となったため見送りました -
© 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 -
© 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 -
© 2025 AltPlus Inc. TiKVの「スケールアウト・イン」について(TiDB Cloud Dedicated) 108 • スケールアウト
◦ Leader(Raft)の移動が完了後にActiveになる ▪ その後、FollowerのRegionをリバランスする • スケールイン ◦ 全てのRegion移動が完了後にActiveになる ▪ この時点でリバランスも完了している Activeになるまでコンソールで操作が出来ないので注意が必要!!