Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
長期運用プロジェクトでのMySQLからTiDB移行の検証
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
COLOPL Inc.
April 16, 2024
Technology
2k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
長期運用プロジェクトでのMySQLからTiDB移行の検証
COLOPL Inc.
April 16, 2024
More Decks by COLOPL Inc.
See All by COLOPL Inc.
実務で動くAIエージェントを作ろう!MCP×Mastraをライブコーディングで実践
colopl
0
350
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
2.3k
PHPStan をできる限り高速化してみる
colopl
1
850
コロプラ最新作インフラ構成について
colopl
0
320
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
2.4k
コロプラのオンボーディングを採用から語りたい
colopl
7
2.8k
怖くない!ゼロから始めるPHPソースコードコンパイル入門
colopl
1
920
大規模トラフィックを支える ゲームバックエンドの課題と構成の変遷 ~安定したゲーム体験を実現するために~
colopl
3
8.7k
ゲームを支えるバックエンドエンジニアのリアルを公開!
colopl
1
1.9k
Other Decks in Technology
See All in Technology
レガシーな広告配信システムでのAI駆動開発/運用の挑戦
i16fujimoto
0
120
スタートアップにAmazon EKSは早すぎる? マルチプロダクト戦略を加速する Platform Engineeringの実践 / Is Amazon EKS Too Soon for Startups? Practical Platform Engineering to Accelerate a Multi-Product Strategy
elmodev09
1
1.8k
40代で“やっとエンジニアになれた”――閉じた学びを開き、空の青さを知る / 20260628 Naoki Takahashi
shift_evolve
PRO
4
870
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
200
4人目のSREはAgent
tanimuyk
0
170
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
130
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
170
時期が悪い!それでもRaspberry Piを買って遊んで活用するには / 20260627-osc26do-rpi-jikigawarui
akkiesoft
0
820
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
120
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.5k
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
190
GitHub Copilot app最速の発信の裏側
tomokusaba
1
260
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
We Have a Design System, Now What?
morganepeng
55
8.2k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
Paper Plane (Part 1)
katiecoart
PRO
0
9.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
340
Optimizing for Happiness
mojombo
378
71k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Into the Great Unknown - MozCon
thekraken
41
2.6k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Designing Experiences People Love
moore
143
24k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
620
Transcript
長期運用プロジェクトでの MySQL から TiDB 移行の検証 私たちはなぜ NewSQL を使うのか TiDB 選定5社が語る選定理由と活用
LT
曽我 光瑛 • 2018年新卒入社 • 技術基盤本部 インフラストラクチャ部 第1グループ所属 • ゲームインフラの横断的な負荷対策やコスト最適化を担当
2 自己紹介
アジェンダ 1. 長期運用プロジェクトの課題 2. TiDB 導入の背景 3. TiDB 導入の課題 4.
まとめ 3
現状のコロプラの構成について • VM 上に構築したシンプルな Source / Replica 構成の MySQL •
水平 / 垂直分割による負荷分散 4 長期運用プロジェクトの課題
ディスクの削減が困難 • 不要データ削除後のディスクの削減のために Source の切替が必要 構成の縮小 • 水平/垂直分割した DB を一つの
DB にまとめる • インフラだけでなくアプリケーション面の対応も必要 セキュリティ対応 • 分割数が多いため、 MySQL や OS のアップデートに追従するコストが重い • オンラインで実施するためには Source の切替作業が必要 5 長期運用プロジェクトの課題
Source の切替について • 新 Source/Replica の組み合わせを作成しメンテナンス無しで切替 • Source の停止が必要な作業では実施しますが、準備に手間がかかります 6
長期運用プロジェクトの課題 Source Replica Source Replica Application Source Replica Source Replica Application
以下の理由で TiDB を選択 • MySQL 互換 • スケールアウト/スケールインが比較的容易に実施可能 • メンテナンス無しでバージョンアップ可能
• 分割した DB はそのままにエンドポイントを一つに集約可能 • データ圧縮によるディスクの削減 7 TiDB 導入の背景
検証でうまくいった部分 • データ圧縮は想定どおり 1/3 程度まで圧縮 • レイテンシーの悪化は想定の範囲内 8 TiDB 導入の課題
TiKV Region1 データ量による負荷 • 大量のデータにより TiKV 上でリージョンの分割が多く発生 • リージョン間のやり取りのプロセスによりクエリの量以上に TiKV
の負荷が上がる • 適切な Primary Key (PK) やインデックスの追加で軽減可能 9 TiDB 導入の課題 Region3 ID (PK) USER_ID DATA 5 1 data5 6 3 data6 Region2 ID (PK) USER_ID DATA 3 1 data3 4 4 data4 ID (PK) USER_ID DATA 1 1 data1 2 2 data2 SELECT * FROM USER_ID = 1;
得意ではないデータやクエリが存在する • 一部の DB で本番相当の負荷をかけた際に、クエリ量に対して負荷が高い状態となった トランザクション分離レベル • MySQL と同じ REPEATABLE-READ
だが実装が異なる • 本番相当のクエリ量の試験で意図しない動作が発生した ◦ リトライによる多重リクエストのようなクエリで MySQL と異なる結果 ▪ 二重インサート防止のためのアプリケーションのロジックが InnoDB の挙動に依存して いたため、TiDB ではエラーが発生した 10 TiDB 導入の課題 [1] https://docs.pingcap.com/ja/tidb/stable/transaction-isolation-levels#difference-between-tidb-and-mysql-repeatable-read
今回の検証で判明したこと • 小規模なデータ、低頻度のアクセスでは発見できない課題がある ◦ 適切な規模で負荷試験を実施することで分散 DB 特有の問題を見つけることができる • TiDB では適切なデータの配置になるようなインデックスや
Primary Key の設定が必要 • InnoDB エンジンに依存するロジックの改善が必要であること 11 まとめ