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

MySQL FEDERATED 引擎實現跨實例遠端表查詢與寫入完整指南

     編輯:MySQL 綜合教學

MySQL FEDERATED 引擎實現跨實例遠端表查詢與寫入完整指南

FEDERATED 儲存引擎讓本地 MySQL 實例透過建立「遠端表映射」直接查詢/修改遠端 MySQL 實例的表,類似 Oracle DB Link。本文涵蓋啟用引擎、建立映射表、連線字串格式、增刪改查驗證、DDL 限制、安全性考量。

一、啟用 FEDERATED 引擎

SHOW ENGINES;

若 FEDERATED 顯示 NO,編輯 my.cnf 在 [mysqld] 區段新增:

federated

重啟 MySQL 服務後再次 SHOW ENGINES 確認顯示 YES。

二、建立遠端映射表

本地建表結構必須與遠端表完全一致(欄位、型別、索引、主鍵),引擎指定 ENGINE=FEDERATED,連線資訊寫在 CONNECTION 選項。

範例:映射遠端 sakila.actor 表

-- 1. 取得遠端表建表語句
SHOW CREATE TABLE sakila.actor;

-- 2. 本地建立映射表
CREATE TABLE federated_actor (
  actor_id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  first_name VARCHAR(45) NOT NULL,
  last_name VARCHAR(45) NOT NULL,
  last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (actor_id),
  KEY idx_actor_last_name (last_name)
) ENGINE=FEDERATED
CONNECTION='mysql://root:123456@127.0.0.1:3306/sakila/actor';

三、連線字串格式詳解

mysql://username[:password]@hostname[:port]/db_name/tbl_name
  • username:遠端資料庫帳號
  • password:可選,明文寫在表定義中有安全風險(SHOW CREATE TABLE 可見)
  • hostname:遠端 IP 或主機名
  • port:預設 3306
  • db_name/tbl_name:遠端資料庫與表名

更多範例

CONNECTION='mysql://user@remote_host/db/tbl'
CONNECTION='mysql://user:pass@remote_host:3306/db/tbl'
CONNECTION='mysql://user:pass@remote_host/db/tbl'

四、驗證查詢與寫入

-- 查詢
SELECT * FROM test.federated_actor LIMIT 5;

-- 更新(同步到遠端)
UPDATE test.federated_actor SET last_name='GUINESS1' WHERE actor_id=1;

-- 驗證遠端同步
SELECT * FROM sakila.actor WHERE actor_id=1;

本地操作會透過連線池轉發至遠端實例執行,遠端資料即時變更。

五、限制與注意事項

項目說明
DDL 不支援ALTER TABLE 會報錯 Table storage engine doesn't have this option
索引建立需在遠端建立,本地映射表同步定義
交易支援不支援跨實例交易(本地 COMMIT 不保證遠端原子性)
效能每次查詢需建立遠端連線,延遲較高,不適合高頻核心業務
密碼明文建議建立專用唯讀帳號、限制來源 IP、或使用 SSH 隧道/VPN
遠端表刪除DROP TABLE 僅刪除本地映射,遠端實表不受影響

六、適用場景與替代方案

  • 適用:異構報表查詢、低頻資料同步、跨資料庫臨時關聯分析、遷移過渡期雙寫驗證。
  • 不適用:高併發核心交易、強一致性分散式交易、大數據量 JOIN。
  • 替代:FEDERATEDX(MariaDB 改良版)、應用層雙寫、CDC 工具、分散式資料庫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved