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
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
910
大規模トラフィックを支える ゲームバックエンドの課題と構成の変遷 ~安定したゲーム体験を実現するために~
colopl
3
8.7k
ゲームを支えるバックエンドエンジニアのリアルを公開!
colopl
1
1.9k
Other Decks in Technology
See All in Technology
自宅LLMの話
jacopen
1
670
【2026年版】 ベクトル検索とEmbedding最前線
mocobeta
20
5.3k
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
160
徹底討論!ECS vs EKS!
daitak
2
780
AIチャット検索改善の3週間
kworkdev
PRO
2
140
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
190
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
5
1.2k
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
0
270
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
280
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
280
失敗を資産に変えるClaude Code
shinyasaita
0
720
Android の公式 Skill / Android skills
yanzm
0
160
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
KATA
mclloyd
PRO
35
15k
Facilitating Awesome Meetings
lara
57
7k
The Cult of Friendly URLs
andyhume
79
6.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
A Soul's Torment
seathinner
6
3k
So, you think you're a good person
axbom
PRO
2
2.1k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
Making Projects Easy
brettharned
120
6.7k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
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 まとめ