FEDERATED 存儲引擎允許本地 MySQL 實例像操作本地表一樣,透明地查詢/修改遠程 MySQL 伺服器上的表。本地僅存放表定義文件,實際數據與索引完全駐留在遠端。這對於跨庫聯表查詢、異構數據整合、微服務數據聚合等場景極具價值。
SHOW ENGINES;
若 Federated 行的 Support 列為 YES,即可直接使用;若為 NO,需修改配置:
my.ini(Windows)或 my.cnf(Linux),在 [mysqld] 區塊加入 federated。

CREATE TABLE `departmentweekdata` ( `department` VARCHAR(20), `week` INT, `interval` INT, `count` INT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 插入測試數據(略)
核心在於 CONNECTION 字串,格式:
CONNECTION='mysql://user:password@remote_host:port/db_name/table_name'
完整建表語句:
CREATE TABLE `fed_departmentweekdata` ( `department` VARCHAR(20), `week` INT, `interval` INT, `count` INT ) ENGINE=FEDERATED CONNECTION='mysql://root:123@192.168.1.100:3306/test_db/departmentweekdata';
若頻繁建立多張遠程表,可先建立 Server 物件,封裝連線參數:
CREATE SERVER `remote_server` FOREIGN DATA WRAPPER mysql OPTIONS ( HOST '192.168.1.100', PORT 3306, DATABASE 'test_db', USER 'root', PASSWORD '123' );
後續建表僅需引用 Server 名稱:
CREATE TABLE `fed_departmentweekdata` ( `department` VARCHAR(20), `week` INT, `interval` INT, `count` INT ) ENGINE=FEDERATED CONNECTION='remote_server/departmentweekdata';
SELECT * FROM fed_departmentweekdata; 即可查詢遠程數據。