MySQL 的 FEDERATED Storage Engine 類似 Oracle DBLink,允許本地建立一張「映射表」,查詢時自動連線遠端 MySQL 實例拉取資料。適用於異構查詢、跨庫報表、遷移校驗等場景。
# 1. 檢查支援 SHOW ENGINES; -- Support 欄位為 YES/NO/DISABLED # 2. 啟用(my.cnf [mysqld] 區) federated # 3. 重啟驗證 SHOW ENGINES; -- 應顯示 YES
mysql://username[:password]@hostname[:port]/db_name/table_name
⚠️ 安全警示:密碼明文寫在表定義中,SHOW CREATE TABLE 可見,生產環境建議用專用只讀帳號、限制來源 IP。
| 操作 | 支援 | 說明 |
|---|---|---|
| SELECT / INSERT / UPDATE / DELETE | ✅ | 透過連線轉發執行 |
| ALTER TABLE | ❌ | Error 1031: doesn't have this option |
| DROP TABLE | ⚠️ | 僅刪除本地映射表,遠端表不受影響 |
| 事務 | ❌ | 不支援跨實例事務 |
| 索引統計 | ❌ | 無法收集遠端索引統計資訊,優化器可能誤判 |
FEDERATED 提供了「零程式碼」跨實例查詢能力,但安全性、效能、功能均有明顯短板。MySQL 8.0 仍未大幅增強,生產環境謹慎使用,優先考慮: