MySQL 中有一個 federated 的 table type,其實應該出來滿久了,但最近有個狀況需要用到,所以就研究,紀錄了一下。
其實這種情境還是挺多的,就是在 Production 上有一個 Master / Slave 的 DB,但為了一些報表需求,又不想吃掉,或是佔用了系統資源,可是報表計算量又特別大,所以就設計了一個這樣的方案,利用 federated 達到目的。
如上圖,拉一個 Read only 出來就是為了不要影響到 M/S 的效能。但 read only 就沒辦法產生一些 statistics 的 table,所以就建立另一個 reporting DB,透過 federated 的方式去把資料計算後存到 reporting 的 DB,這樣不僅不會影響到 M/S 的效能,還可以取得 near realtime 的資料庫。