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 Cloudへ移行した手順紹介 @TiUG #0
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Tao Watanabe
January 29, 2024
Technology
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
オンプレMySQLをTiDB Cloudへ移行した手順紹介 @TiUG #0
TiUG #0 (
https://tiug.connpass.com/event/303186/)のLT資料です
。
Tao Watanabe
January 29, 2024
More Decks by Tao Watanabe
See All by Tao Watanabe
マイクロサービスの効率的な監視〜不安定な依存先との闘い〜
taowata
6
2.9k
Other Decks in Technology
See All in Technology
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
150
今さら理解するウェブフォントver.2026
takanorip
3
930
LLM-as-a-Judgeは本当に信頼できるのか――評価器を評価する話
taka_aki
2
730
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
200
会社紹介資料 / Sansan Company Profile
sansan33
PRO
31
430k
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
700
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
190
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
160
僕のハーネスを紹介します
watany
3
920
Rust で関数型ドメインモデリング
takonda
0
170
SharedWorkerを使ったキャッシュでネイティブアプリに負けないユーザー体験を目指す
kakehashi
PRO
1
110
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
4
630
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
4 Signs Your Business is Dying
shpigford
187
23k
Mind Mapping
helmedeiros
1
400
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
580
Side Projects
sachag
456
43k
Automating Front-end Workflow
addyosmani
1369
210k
Rails Girls Zürich Keynote
gr2m
96
14k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
460
Transcript
オンプレMySQLを TiDB Cloudへ移行した手順紹介 TiUG #0
自己紹介 DMM.com プラットフォーム事業本部 渡部太緒 (わたなべ たお) X: @tao_wata 認証APIの開発・運用を行っています
発表内容 • オンプレMySQLをTiDB Cloudへ移行した手順 • 差分チェックツール sync-diff-inspector の詰まりどころ
オンプレMySQLをTiDB Cloudへ 移行した手順
移行の要件 サービス無停止
移行手順 1. 既存データdump&import 2. 並行書き込み 3. 差分チェックと差分解消 4. 参照先をMySQLからTiDBへ切り替え
オンプレ環境 既存データをdumpし、S3へアップロード MySQL .sql ファイル Amazon S3
TiDB CloudへS3経由でデータimport コンソールからimportできる 空のテーブルを作成しておく Amazon S3 TiDB Cloud
オンプレ環境 並行書き込み API MySQL 書き込み (Upsert) 書き込み 読み取り MySQLとTiDB片方の書き込みが 失敗した場合
両方ロールバックして整合性を担保 TiDBへの書き込みはUpsert
差分チェックと解消 オンプレMySQLのデータdump から 並行書き込み開始 までの間に 更新のあったデータはTiDBに同期されていない → sync-diff-inspectorで差分チェックし、差分解消クエリを実行する
sync-diff-inspectorとは GitHub: pingcap/tidb-tools リポジトリで管理されているツール MySQLとTiDB, MySQLとMySQL, TiDBとTiDBのデータを比較できる 少量のデータに差分があるシナリオで差分解消ができる
sync-diff-inspectorの実行 オンプレ環境 API MySQL 書き込み 書き込み 読み取り sync-diff-inspector 読み取り 読み取り
差分解析結果と 差分解消クエリの出力
差分解消クエリの実行 sync-diff-inspectorによって出力された差分解消クエリを TiDBに対して実行 → 再度sync-diff-inspectorを実行し、差分がないことを確認
意外とうまくいった 実は、sync-diff-inspectorはデータ書き込みのあるMySQLとTiDB 間 のオンラインチェックをサポートしていない 確かにエラーの発生で差分チェックが中断することがあったが... [FATAL] [diff.go:548] ["the count is
not correct"] 出力できたところまでの差分解消クエリの実行と差分チェックの再実行 を繰り返すことでデータ同期が完了
参照先をMySQLからTiDBへ切り替え 既存のSQLがそのまま使えるので、苦戦することなく切り替え完了 オンプレ環境 API MySQL 書き込み 書き込み 読み取り 読み取り
結果 サービス無停止でのDB移行ができた
sync-diff-inspectorの 詰まりどころ
現象: 差分解消クエリが文字化け ↓ BINARY型カラムのデータがそのまま出力されていたため文字化けしてしまった REPLACE INTO `table_name`(...,`binary_column`, ...) VALUES (...,'ßä���<95>ko^P��«',
...); REPLACE INTO `sbtest`.`sbtest99`(`id`,`k`,`c`,`pad`) VALUES (3700000,2501808,'hello','world');
解決策: 16進数形式でクエリを出力するよう改修 sync-diff-inspectorをフォーク 16進数表記にデータ変換し、 UNHEX関数を利用してクエリを出力するよう改修 REPLACE INTO `table_name`(...,`binary_column`, ...) VALUES
(...,UNHEX('hexadecimal representation'), ...);
Feature Request 投げました sync-diff-inspector: use UNHEX for BINARY and VARBINARY
types #746 https://github.com/pingcap/tidb-tools/issues/746
まとめ
まとめ TiDB Cloudのimport 機能とsync-diff-inspectorを利用して 無停止移行ができた sync-diff-inspectorがもっと使いやすくなると嬉しい