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
AWS Database Migration Serviceを使って無停止でDB統合※読み込み...
Search
taisa
February 15, 2024
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Database Migration Serviceを使って無停止でDB統合※読み込み側だけだよー📢
taisa
February 15, 2024
More Decks by taisa
See All by taisa
事業の成長にDBアーキテクチャをアラインするために AWS Database Migration Service (DMS) を活用した話
taisa
0
910
Golangにコントリビュートしたときの話
taisa
1
810
スクラムの取り組み
taisa
0
120
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
930
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
820
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
A Tale of Four Properties
chriscoyier
163
24k
Transcript
© 2024 Techtouch. AWS Database Migration Service を使って 無停止でDB統合 ※読み込み側だけだよー📢
すべてのユーザーが システムを使いこなせる世界に システム導入だけで終わらせない、利活用のためのDXプラットフォーム
すべてのユーザーが システムを使いこなせる世界に システム導入だけで終わらせない、利活用のためのDXプラットフォーム
4 © 2024 Techtouch. Database Migration Service とは 参考:https://aws.amazon.com/jp/blogs/news/webinar-bb-awsdatabasemigrationservice-2021
© 2024 Techtouch. なぜDBを統合するにいたったか
6 © 2024 Techtouch. なぜDBを統合するにいたったか - マイクロサービスでサービスを運用している - 一部のサービスが分散モノリス状態であった -
モジュラーモノリスへ変更 - 別ドメインでサービス切り直し - 変更した結果 - DBが分かれたままなので開発効率はそこまであがらない - DB※RDSを統合することとした 👈 ココ
7 © 2024 Techtouch. 変更後の構成 なぜDBを統合するにいたったか
8 © 2024 Techtouch. なぜDBを統合するにいたったか - 変更後の構成 - main -
Read/Write - viewer - Read Only - 課題 - DBが分かれたままなので開発効率はそこまであがらない - 分散トランザクション問題は残ったまま → DB統合しよう!!
© 2024 Techtouch. 前提
10 © 2024 Techtouch. 前提 - やりたいこと - 同一スキーマにDBを統合したい -
制約 - それぞれのDBに同じ名前のテーブル名が存在する - テーブル名をリネームする必要がある
11 © 2024 Techtouch. 前提 - DBの特徴 - 最初Aurora MySQL
2.xのレプリケーション機能を利用しようとした が利用しているバージョンではテーブル単位のレプリケーションがで きなかったため断念 — Aurora MySQL 2.x のバイナリログレプリケーションでは information_schema, performance_schema, mysql データベース上の Aurora の管理テーブルを除く、すべ てのデータベースの変更がレプリケーションされる (ソースのバイナリログに書き込まれ る) 動作となる 参照:https://dev.mysql.com/doc/refman/5.7/en/binary-log-mysql-database.html
12 © 2024 Techtouch. 前提 - サービスの特性 - main -
夜間メンテナンス可 - viewer - メンテナンス入れたくない!
© 2024 Techtouch. 統合プロセス
14 © 2024 Techtouch. 統合プロセス
15 © 2024 Techtouch. 統合プロセス
16 © 2024 Techtouch. 統合プロセス
© 2024 Techtouch. DMS設定
18 © 2024 Techtouch. DMS設定
19 © 2024 Techtouch. DMS設定
© 2024 Techtouch. DMSで気をつけるポイント
21 © 2024 Techtouch. 気をつけるポイント① 外部キー制約やインデックスなどのメタデータは同期されない - DMSはテーブル作成からレプリまでしてくれる設定がある - 外部キー制約やインデックスなどのメタデータは同期されない
メタデータが必要な場合は事前にテーブルを作成しておきましょう! create table if not exists drop & create truncate
22 © 2024 Techtouch. 気をつけるポイント② Max LOB サイズを適切に設定しないとデータが切り捨てられる - LOB(Large
Object)とは - データベースにおいて扱われる巨大なデータを表す用語 - BLOB(バイナリデータ) - CLOB(テキストデータ)→ JSON型 etc - XLOB(XMLデータ) - 完全LOBモード - データを切り捨てないが速度が低下するリスク - 制限付きLOBモード(推奨) - リソースを事前に割り当てる - サイズを超過するとデータを切り捨てる 下記SQLでLOBカラムの最大値をチェックしましょう!
23 © 2024 Techtouch. 気をつけるポイント③ 同期先テーブルのLOBカラムはNot Null制約があると同期失敗する - 同期先テーブルのLOBカラムはNot Null制約をはずしましょう!
- LOBカラムは最初にNULLとなりあとからデータが同期される動きとなる(は ず)ため 参照:https://e-words.jp/w/LOB-1.html
24 © 2024 Techtouch. 気をつけるポイント④ インスタンスのメモリはなかなか開放されない - フルロード時にメモリを結構使う - その後のレプリケーション中も徐々にメモリが食われ続ける
初回フルロード時のメモリ使用量とレプリケーション期間に使われるメモリ量を事前に確認してメ モリ枯渇しないように注意しましょう!
25 © 2024 Techtouch. 気をつけるポイント⑤ CASCADEで更新されたデータは同期されない - レプリケーション中は「テーブル統計で」状況が確認できる - 「検証に失敗しました」にカウントされターゲット側のデータは更新されない
CASCADE利用しているか事前にチェックしましょう!
26 © 2024 Techtouch. 気をつけるポイント⑥ too many connections発生しがち - 並列にロードするテーブルの最大数のデフォルトは8
- 開発環境では簡単にtoo many connectionsが発生した 本番のDBコネクションを食いつぶすリスクがあるのでコネクション数チェックしましょう!
27 © 2024 Techtouch. まとめ - サービスのアーキテクチャに合わせた手法を使う - 難しければ手前でアーキテクチャを変更するのも一手 -
DMS - 柔軟に設定ができて便利 - 必要に応じて細かいチューニングを - 気をつけないと躓きポイントが割とあるので要注意 1. 外部キー制約やインデックスなどのメタデータは同期されない 2. Max LOB サイズを適切に設定しないと同期に失敗する 3. 同期先テーブルのLOBカラムはNot Null制約があると同期失敗する 4. インスタンスのメモリはなかなか解放されない 5. CASCADE で更新されたデータは同期されない 6. too many connections 発生しがち
© 2024 Techtouch. - https://x.com/taisa831 - https://taisa.super.site - 著書(共著) ご清聴ありがとうございました。