MySQL (mariadb) 的 federated 功能
  • 5,607 views,
  • 2019-08-19,
  • 上傳者: Kuann Hung,
  •  0
MySQL 中有一個 federated 的 table type,其實應該出來滿久了,但最近有個狀況需要用到,所以就研究,紀錄了一下。
其實這種情境還是挺多的,就是在 Production 上有一個 Master / Slave 的 DB,但為了一些報表需求,又不想吃掉,或是佔用了系統資源,可是報表計算量又特別大,所以就設計了一個這樣的方案,利用 federated 達到目的。
8dc5afa979c5708b54592dcdff47e86b.png
 
如上圖,拉一個 Read only 出來就是為了不要影響到 M/S 的效能。但 read only 就沒辦法產生一些 statistics 的 table,所以就建立另一個 reporting DB,透過 federated 的方式去把資料計算後存到 reporting 的 DB,這樣不僅不會影響到 M/S 的效能,還可以取得 near realtime 的資料庫。
步驟
1.
確認是否有啟用 federated 引擎
用這個指令就能確認是否有啟用 FEDERATED engine 了
show engines; 
2.
建立伺服器連線
為了方便後面表格的建立,所以先產生一個伺服器的 alias,把帳號密碼都放進去,這樣後面件表格就會輕鬆很多
 
CREATE SERVER readonly_db
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remote_account', HOST '192.168.1.1', DATABASE 'store', PASSWORD 'passwd');
3.
建立 Federated Table 
如果要將某個 table (shopping) 映射到 read only 那台 DB 的 shopping 的話,就只要這樣做就行
CREATE TABLE shopping (id INT, item VARCHAR(255))
ENGINE=FEDERATED CONNECTION='readonly_db';
Facebook 討論區載入中...
資料夾 :
發表時間 :
2019-08-19 09:06:58
觀看數 :
5,607
發表人 :
Kuann Hung
部門 :
老洪的 IT 學習系統
QR Code :