Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
長期運用プロジェクトでのMySQLからTiDB移行の検証
Search
COLOPL Inc.
April 16, 2024
Technology
2.1k
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.
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
210
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
1.3k
Claude Code 再入門 会話の渡し方の4つの道具 - Claude Codeスキル・ハーネス社内勉強会
colopl
0
500
Copilot / Claude Code 両方で使えるスキル・ハーネスの紹介 - Claude Codeスキル・ハーネス社内勉強会
colopl
0
710
実務で動くAIエージェントを作ろう!MCP×Mastraをライブコーディングで実践
colopl
0
550
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
2.8k
PHPStan をできる限り高速化してみる
colopl
1
1.5k
コロプラ最新作インフラ構成について
colopl
0
400
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
2.5k
Other Decks in Technology
See All in Technology
1週間、Opus封印でお願いします
kintotechdev
0
190
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
230
企画を Software Factory-ready にする——開発が高速になったとき、PdMの仕事はどう変わったか
yachibit
1
270
クラウドエージェントの先駆け Devin。今も最先端を走る、他との違い
kinopeee
0
420
AIをリアル世界に解き放つ 〜M5Stack×AIであなたのアイディアを手の平に〜
hamadakoji
1
550
What Is JetBrains Air
x5gtrn
PRO
0
170
顧客価値を追いかけたら、プライシングにたどり着いた
sansantech
PRO
2
1k
AI駆動開発における開発環境のセキュリティの考え方
yamahiro
2
620
AWSDirectConnectの構築の進め方を整理してみた
masa_my
1
200
Draft AIエージェントの トークン消費を最小化する 8つの原則
kinopeee
5
1.7k
Claude Code をローカルとサーバー上で利用した際の Bedrock 利用料をユーザー単位で一本化してみる
ohorig
0
160
プロダクトが成長すると、 プロダクトマネージャーの仕事はどう変わるのか - 「まず作る」から「小さく学び、確かめながら進む」へ
sansantech
PRO
1
370
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
620
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
860
KATA
mclloyd
PRO
35
16k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
600
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
530
The Cost Of JavaScript in 2023
addyosmani
55
10k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
550
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Into the Great Unknown - MozCon
thekraken
41
2.8k
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 まとめ