首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL FEDERATED 引擎實戰:跨伺服器訪問遠程表完整教程

     編輯:MySQL 綜合教學

什麼是 FEDERATED 引擎?

FEDERATED 存儲引擎允許本地 MySQL 實例像操作本地表一樣,透明地查詢/修改遠程 MySQL 伺服器上的表。本地僅存放表定義文件,實際數據與索引完全駐留在遠端。這對於跨庫聯表查詢、異構數據整合、微服務數據聚合等場景極具價值。

前置檢查:確認伺服器支援

SHOW ENGINES;

若 Federated 行的 Support 列為 YES,即可直接使用;若為 NO,需修改配置:

  1. 編輯 my.ini(Windows)或 my.cnf(Linux),在 [mysqld] 區塊加入 federated。
  2. 重啟 MySQL 服務。

SHOW ENGINES 結果 配置文件修改示例

步驟 1:遠程伺服器建立基礎表並導入數據

CREATE TABLE `departmentweekdata` (
  `department` VARCHAR(20),
  `week` INT,
  `interval` INT,
  `count` INT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入測試數據(略)

步驟 2:本地建立 FEDERATED 表映射遠程表

核心在於 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';

進階:建立 FEDERATED SERVER 簡化連線管理

若頻繁建立多張遠程表,可先建立 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';

驗證與注意事項

  1. 建表成功後,直接 SELECT * FROM fed_departmentweekdata; 即可查詢遠程數據。
  2. 效能提醒:FEDERATED 引擎不支援索引下推、條件下推,複雜查詢會拉取全表數據到本地再過濾,大表慎用。
  3. 事務限制:遠程表操作不參與本地事務,無法保證分布式一致性。
  4. 安全性:連線字串含明文密碼,生產環境建議使用 SSL 連線或專用只讀帳號。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved