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.
Claude Code 再入門 会話の渡し方の4つの道具 - Claude Codeスキル・ハーネス社内勉強会
colopl
0
360
Copilot / Claude Code 両方で使えるスキル・ハーネスの紹介 - Claude Codeスキル・ハーネス社内勉強会
colopl
0
420
実務で動くAIエージェントを作ろう!MCP×Mastraをライブコーディングで実践
colopl
0
450
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
2.6k
PHPStan をできる限り高速化してみる
colopl
1
1.3k
コロプラ最新作インフラ構成について
colopl
0
350
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
2.4k
コロプラのオンボーディングを採用から語りたい
colopl
7
2.9k
怖くない!ゼロから始めるPHPソースコードコンパイル入門
colopl
1
980
Other Decks in Technology
See All in Technology
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
77k
Microsoft MVP プログラムを紹介するから目指す人増えてくれ
tsubakimoto_s
0
110
AIで変わるエンジニアの働き方(仮)
naoinaoi
0
550
markdown-poster Introduction
kazamori
0
200
EMの役割で 変わったこと・変わらなかったこと
sansantech
PRO
0
130
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
580
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
20k
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
460
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
20k
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
平文パスワードはログに“残り” ── 肝心の侵入は“痕跡すら残らない”
kuroneko13
0
130
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
270
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
380
How to train your dragon (web standard)
notwaldorf
97
6.8k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
550
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
490
Building Adaptive Systems
keathley
44
3.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The SEO Collaboration Effect
kristinabergwall1
1
530
HDC tutorial
michielstock
2
820
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Being A Developer After 40
akosma
91
590k
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 まとめ