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

MySQL FEDERATED 引擎實現跨網絡異構資料庫表聯邦查詢與寫入實戰

     編輯:MySQL 綜合教學

MySQL FEDERATED 引擎實現跨網絡異構資料庫表聯邦查詢與寫入實戰

場景

本地 IP1 (192.168.1.100) 需透明訪問遠程 IP2 (112.219.11.139:13306) 上的 rzem.e_hostcomputer 表,像操作本地表一樣增刪改查。

前置條件

  • 本地 MySQL 支援 FEDERATED 引擎(5.1+ 預設編譯,需啟用)
  • 遠程 MySQL 允許本地 IP 連接,且有對應權限帳號

步驟一:本地啟用 FEDERATED 引擎

-- 遠程 MySQL 執行
CREATE USER 'fed_user'@'192.168.1.100' IDENTIFIED BY 'StrongPass123!';
GRANT SELECT, INSERT, UPDATE, DELETE ON rzem.e_hostcomputer TO 'fed_user'@'192.168.1.100';
FLUSH PRIVILEGES;

建議: 僅授予必要權限,不用 root。

步驟三:本地建立聯邦表(結構必須完全一致)

-- 查詢
SELECT * FROM e_hostcomputer_link LIMIT 10;

-- 插入
INSERT INTO e_hostcomputer_link (CODE, NAME, IP) VALUES ('TEST001', '測試機', '10.0.0.1');

-- 更新
UPDATE e_hostcomputer_link SET STATUS = '1' WHERE CODE = 'TEST001';

-- 刪除
DELETE FROM e_hostcomputer_link WHERE CODE = 'TEST001';

所有操作實時同步到遠程表,無感知。

效能與限制(必讀)

項目說明
索引聯邦表不支援本地索引,WHERE 條件會推送到遠程執行,依賴遠程索引
事務不支援跨聯邦表事務,單表操作自動提交
並發每次查詢建立新連接,高併發下遠程連接數易耗盡
網路跨機房延遲直接影響響應時間,不適合高頻核心業務
DDLALTER TABLE 等結構變更不支援,需手動同步兩端結構
備份mysqldump 只會導出聯邦表定義,不導出遠程數據

替代方案對比

方案優點缺點適用場景
FEDERATED零代碼侵入、透明 SQL效能差、無事務、維護難低頻報表、異構數據整合
ETL 同步 (DataX/Canal)本地查詢快、支援索引有延遲、需維護同步任務數據倉庫、離線分析
分庫分表中間件 (ShardingSphere)統一路由、支援分布式事務架構複雜、學習成本高微服務、高併發核心業務

生產建議

  • 僅用於低頻、非核心、容忍秒級延遲的查詢/寫入
  • 遠程帳號最小權限、強密碼、IP 白名單
  • 監控聯邦表查詢耗時,超閾值告警
  • 遠程表結構變更需雙端同步變更腳本
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved