最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 存儲(chǔ)引擎 FEDERATED使用方法

 更新時(shí)間:2026年03月12日 09:32:21   作者:阿波羅尼亞  
FEDERATED是MySQL 的一個(gè)特殊存儲(chǔ)引擎,它允許你訪問遠(yuǎn)程 MySQL 服務(wù)器上的表數(shù)據(jù),而無需使用復(fù)制(Replication)或集群(Cluster)技術(shù),本文給大家介紹MySQL 存儲(chǔ)引擎 FEDERATED的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧

1. 什么是 FEDERATED 存儲(chǔ)引擎

FEDERATED 是 MySQL 的一個(gè)特殊存儲(chǔ)引擎,它允許你訪問遠(yuǎn)程 MySQL 服務(wù)器上的表數(shù)據(jù),而無需使用復(fù)制(Replication)或集群(Cluster)技術(shù)。本地創(chuàng)建一個(gè) FEDERATED 表,它實(shí)際上是一個(gè)指向遠(yuǎn)程表的鏈接。

2. 工作原理

本地 MySQL 服務(wù)器          遠(yuǎn)程 MySQL 服務(wù)器
┌─────────────────┐      ┌─────────────────┐
│ FEDERATED 表     │─────>│ 實(shí)際數(shù)據(jù)表       │
│ (只存結(jié)構(gòu))       │      │ (存儲(chǔ)真實(shí)數(shù)據(jù))   │
└─────────────────┘      └─────────────────┘
       ↓                        ↓
   元數(shù)據(jù)                    數(shù)據(jù)存儲(chǔ)
   (無數(shù)據(jù))                  (真實(shí)數(shù)據(jù))

核心機(jī)制:
- 本地不存儲(chǔ)任何數(shù)據(jù),只保存表結(jié)構(gòu)
- 所有查詢操作通過 MySQL Client API 發(fā)送到遠(yuǎn)程服務(wù)器
- 每次查詢都是實(shí)時(shí)的,直接獲取遠(yuǎn)程數(shù)據(jù)
- 支持 INSERT、UPDATE、DELETE 等操作

3. 使用場(chǎng)景

? 適合的場(chǎng)景:

1. 數(shù)據(jù)整合:需要跨多個(gè) MySQL 實(shí)例查詢數(shù)據(jù)
2. 分布式查詢:避免數(shù)據(jù)遷移,實(shí)時(shí)訪問遠(yuǎn)程數(shù)據(jù)
3. 數(shù)據(jù)同步中間方案:作為 ETL 的臨時(shí)方案
4. 報(bào)表系統(tǒng):匯總多個(gè)數(shù)據(jù)源的數(shù)據(jù)
5. 遺留系統(tǒng)集成:訪問舊系統(tǒng)數(shù)據(jù)而不影響原有架構(gòu)

? 不適合的場(chǎng)景:

1. 高性能要求的應(yīng)用
2. 頻繁大量數(shù)據(jù)操作
3. 網(wǎng)絡(luò)不穩(wěn)定的環(huán)境
4. 需要事務(wù)一致性的關(guān)鍵業(yè)務(wù)

4. 使用方法

步驟 1:?jiǎn)⒂?FEDERATED 引擎

-- 檢查是否啟用
SHOW ENGINES;
-- 如果未啟用,在 my.cnf/my.ini 中添加
[mysqld]
federated
-- 或者動(dòng)態(tài)加載(如果已編譯)
INSTALL PLUGIN federated SONAME 'ha_federated.so';

步驟 2:創(chuàng)建遠(yuǎn)程表(在遠(yuǎn)程服務(wù)器)

-- 在遠(yuǎn)程服務(wù)器 (例如:192.168.1.100:3306) 
CREATE DATABASE remote_db;
USE remote_db;
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50),
    email VARCHAR(100),
    created_at DATETIME
) ENGINE=InnoDB;

步驟 3:創(chuàng)建本地 FEDERATED 表

方法一:使用 CONNECTION 參數(shù)

USE local_db;
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50),
    email VARCHAR(100),
    created_at DATETIME
) ENGINE=FEDERATED
CONNECTION='mysql://username:password@192.168.1.100:3306/remote_db/users';

方法二:使用 DATA DIRECTORY 和 INDEX DIRECTORY(舊版本)

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50),
    email VARCHAR(100),
    created_at DATETIME
) ENGINE=FEDERATED
DATA DIRECTORY='mysql://user:pass@host:port/db/table';

步驟 4:使用示例

-- 查詢遠(yuǎn)程數(shù)據(jù)(和本地表一樣使用)
SELECT * FROM users WHERE username = 'john';
-- 插入數(shù)據(jù)(實(shí)際插入到遠(yuǎn)程)
INSERT INTO users (username, email) VALUES ('alice', 'alice@example.com');
-- 更新操作
UPDATE users SET email = 'new@example.com' WHERE id = 1;
-- 刪除操作
DELETE FROM users WHERE id = 1;
-- JOIN 本地表和 FEDERATED 表
SELECT l.*, f.* 
FROM local_table l 
INNER JOIN users f ON l.user_id = f.id;

5. 配置選項(xiàng)

# my.cnf / my.ini
[mysqld]
# 啟用 FEDERATED
federated
# 可選配置
federated_max_connections=100        # 最大連接數(shù)
read_buffer_size=256K                # 讀緩沖區(qū)
read_rnd_buffer_size=256K            # 隨機(jī)讀緩沖區(qū)

6. 優(yōu)缺點(diǎn)分析

? 優(yōu)點(diǎn):

1. 實(shí)時(shí)性:直接訪問遠(yuǎn)程最新數(shù)據(jù)
2. 透明性:對(duì)應(yīng)用層透明,像使用本地表一樣
3. 靈活性:支持跨庫、跨服務(wù)器查詢
4. 無需復(fù)制:不需要配置主從復(fù)制
5. 節(jié)省空間:本地不存儲(chǔ)數(shù)據(jù)

? 缺點(diǎn):

1. 性能問題:每次查詢都需要網(wǎng)絡(luò)往返
2. 單點(diǎn)故障:遠(yuǎn)程服務(wù)器宕機(jī)則無法訪問
3. 不支持索引下推:所有過濾在本地進(jìn)行
4. 事務(wù)限制:不支持分布式事務(wù)
5. 調(diào)試?yán)щy:?jiǎn)栴}排查復(fù)雜

7. 廢棄原因

FEDERATED 存儲(chǔ)引擎在 MySQL 8.0 中被標(biāo)記為棄用(Deprecated),主要原因:

1. 維護(hù)成本高:代碼復(fù)雜,維護(hù)團(tuán)隊(duì)少
2. 性能瓶頸:網(wǎng)絡(luò)延遲導(dǎo)致性能差
3. 功能限制多:
   - 不支持 ALTER TABLE
   - 不支持索引優(yōu)化
   - 不支持批量操作優(yōu)化
   - 不支持子查詢優(yōu)化
4. 穩(wěn)定性問題:容易出現(xiàn)連接中斷、數(shù)據(jù)不一致
5. 更好的替代方案:
   - MySQL Replication:主從復(fù)制更可靠
   - MySQL Cluster:集群方案更強(qiáng)大
   - MySQL Fabric:高可用方案
   - ETL 工具:定期同步數(shù)據(jù)
   - 應(yīng)用層解決:微服務(wù) API 調(diào)用

8. 替代方案示例

方案一:使用視圖 + 復(fù)制

-- 在主庫
CREATE VIEW all_users AS
SELECT * FROM db1.users
UNION ALL
SELECT * FROM db2.users;
-- 通過復(fù)制到從庫,從庫查詢視圖

方案二:應(yīng)用層聚合

// Java 示例
@Service
public class UserService {
    @Autowired
    private UserRepository localRepo;
    @Autowired
    @Qualifier("remoteUserRepository")
    private UserRepository remoteRepo;
    public List<User> getAllUsers() {
        List<User> all = new ArrayList<>();
        all.addAll(localRepo.findAll());
        all.addAll(remoteRepo.findAll());
        return all;
    }
}

方案三:使用 ETL 工具

# 使用 DataX 同步
{
  "job": {
    "content": [{
      "reader": {
        "name": "mysqlreader",
        "parameter": {
          "connection": [{
            "table": ["users"],
            "jdbcUrl": ["jdbc:mysql://remote:3306/db"]
          }]
        }
      },
      "writer": {
        "name": "mysqlwriter",
        "parameter": {
          "connection": [{
            "table": ["users"],
            "jdbcUrl": "jdbc:mysql://local:3306/db"
          }]
        }
      }
    }]
  }
}

9. 總結(jié)建議

如果是新項(xiàng)目,建議使用其他方案替代 FEDERATED。如果是現(xiàn)有系統(tǒng)在使用,建議制定遷移計(jì)劃,逐步替換為更可靠的方案。

到此這篇關(guān)于MySQL 存儲(chǔ)引擎 FEDERATED的文章就介紹到這了,更多相關(guān)mysql存儲(chǔ)引擎federated內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql命令行導(dǎo)入sql數(shù)據(jù)的代碼

    Mysql命令行導(dǎo)入sql數(shù)據(jù)的代碼

    Mysql命令行導(dǎo)入sql數(shù)據(jù)的實(shí)現(xiàn)方法是我們經(jīng)常會(huì)用到的,下面就為你詳細(xì)介紹Mysql命令行導(dǎo)入sql數(shù)據(jù)的方法步驟,希望對(duì)您學(xué)習(xí)Mysql命令行方面能有所幫助。
    2010-12-12
  • mysql 字段as詳解及實(shí)例代碼

    mysql 字段as詳解及實(shí)例代碼

    這篇文章主要介紹了mysql 字段as詳解,并附實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • 一篇文章搞懂MySQL加鎖機(jī)制

    一篇文章搞懂MySQL加鎖機(jī)制

    線程安全就是多線程訪問時(shí),采用了加鎖機(jī)制,當(dāng)一個(gè)線程訪問該類的某個(gè)數(shù)據(jù)時(shí)進(jìn)行保護(hù),下面這篇文章主要給大家介紹了關(guān)于MySQL加鎖機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 一文搞懂Mysql中的共享鎖、排他鎖、悲觀鎖、樂觀鎖及使用場(chǎng)景

    一文搞懂Mysql中的共享鎖、排他鎖、悲觀鎖、樂觀鎖及使用場(chǎng)景

    剛開始學(xué)習(xí)MySQL中鎖的時(shí)候,網(wǎng)上一查出來一堆,什么表鎖、行鎖、讀鎖、寫鎖、悲觀鎖、樂觀鎖等等等,直接整個(gè)人就懵了,下面這篇文章主要給大家介紹了關(guān)于Mysql中共享鎖、排他鎖、悲觀鎖、樂觀鎖及使用場(chǎng)景的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 安裝和使用percona-toolkit來輔助操作MySQL的基本教程

    安裝和使用percona-toolkit來輔助操作MySQL的基本教程

    這篇文章主要介紹了安裝和使用percona-toolkit來輔助操作MySQL的基本教程,這里舉了五個(gè)最常見的命令用法,需要的朋友可以參考下
    2015-11-11
  • 使用xshell實(shí)現(xiàn)代理功能并navicat?for?MySQL?進(jìn)行測(cè)試

    使用xshell實(shí)現(xiàn)代理功能并navicat?for?MySQL?進(jìn)行測(cè)試

    本文介紹使用xshell實(shí)現(xiàn)代理功能并使用navicat?for?MySQL進(jìn)行測(cè)試,文章主要利用SSH連接工具xshell就可以實(shí)現(xiàn)簡(jiǎn)單的代理功能,下面實(shí)現(xiàn)過程,需要的小伙伴可以參考一下
    2022-02-02
  • Mysql排序和分頁(order by&limit)及存在的坑

    Mysql排序和分頁(order by&limit)及存在的坑

    這篇文章主要介紹了Mysql排序和分頁(order by&limit)及存在的坑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 分享8個(gè)不得不說的MySQL陷阱

    分享8個(gè)不得不說的MySQL陷阱

    這篇文章給大家分享8個(gè)不得不說的MySQL陷阱,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-03-03
  • mysql下普通索引和唯一索引的效率對(duì)比

    mysql下普通索引和唯一索引的效率對(duì)比

    昨天有位同事說,他的網(wǎng)頁查詢過程中發(fā)現(xiàn)普通索引和唯一索引的效率是有差別的,普通索引比唯一索引快
    2010-12-12
  • MySQL數(shù)據(jù)庫完全卸載的方法

    MySQL數(shù)據(jù)庫完全卸載的方法

    MySQL數(shù)據(jù)庫是一款非常好用的數(shù)據(jù)庫管理系統(tǒng),但是相對(duì)來說卸載起來麻煩一些,本文就詳細(xì)的介紹有一下卸載方法,感興趣的可以了解一下
    2022-03-03

最新評(píng)論

新野县| 清徐县| 达拉特旗| 玉林市| 商城县| 堆龙德庆县| 定襄县| 诏安县| 陆丰市| 湘潭县| 锡林浩特市| 黔西县| 仪陇县| 罗定市| 吴旗县| 江川县| 新宁县| 昌都县| 道孚县| 甘泉县| 华容县| 安图县| 尼玛县| 崇仁县| 玉田县| 柯坪县| 屏东县| 寻甸| 康定县| 遂昌县| 庆阳市| 澳门| 永川市| 洛南县| 尤溪县| 镇宁| 富源县| 夏邑县| 易门县| 新平| 娄烦县|