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
AWS Database Migration Serviceを使って無停止でDB統合※読み込み...
Search
taisa
February 15, 2024
360
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
860
Golangにコントリビュートしたときの話
taisa
1
780
スクラムの取り組み
taisa
0
110
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
410
エンジニアに許された特別な時間の終わり
watany
107
250k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
840
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
A designer walks into a library…
pauljervisheath
211
24k
Building Applications with DynamoDB
mza
96
7.1k
Docker and Python
trallard
47
3.9k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
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 - 著書(共著) ご清聴ありがとうございました。