Mysql-经典实战案例(13):如何通过Federated实现跨实例访问表

实现原理:使用Federated引擎本创建一个链接表实现,但是Federated 引擎只是一个按列的顺序和类型解析远程返回的数据流

在这里插入图片描述

准备工作:
1. 本地库启用 Federated 引擎
  1. 查看是否已启用:

    SHOW ENGINES;
    

    如果Federated 引擎的 SupportYES 就可以直接用;
    如果是 NO

    • 编辑 MySQL 配置文件 my.cnf(Linux 一般在 /etc/my.cnf,Windows 在 MySQL 安装目录下)

    • [mysqld] 段加:

      federated
      
    • 重启 MySQL。

2. 确保远程库允许连接
  • 远程 MySQL 要创建一个能被本地 MySQL 访问的账号,比如:

    CREATE USER 'federated_user'@'本地IP' IDENTIFIED BY '密码';
    GRANT SELECT ON remote_db.* TO 'federated_user'@'本地IP';
    FLUSH PRIVILEGES;
    
  • 测试是否能直接用 mysql -h远程IP -u federated_user -p 登录。


3. 在本地建 Federated 表

假设远程有:

-- 远程 MySQL (192.168.1.200)
CREATE DATABASE remote_db;
USE remote_db;
CREATE TABLE user_info (id INT PRIMARY KEY,name VARCHAR(50),age INT
);
INSERT INTO user_info VALUES (1, 'Alice', 25), (2, 'Bob', 30);
本地建一个 Federated 表

需要先从远程表获取对应的表结构创建sql


SHOW CREATE TABLE remote_user_info\G

本地创建(把 InnoDB 改成 FEDERATED

CREATE TABLE remote_user_info (id INT PRIMARY KEY,name VARCHAR(50),age INT
) ENGINE=FEDERATED
CONNECTION='mysql://federated_user:密码@192.168.1.200:3306/remote_db/user_info';
参数说明
  • mysql://
    协议标识,固定写 mysql:// 表示 Federated 连接到 MySQL 数据源。
  • federated_user
    远程 MySQL 用户名(必须有访问远程表的权限)。
  • 密码
    对应的远程 MySQL 用户密码。
  • 192.168.1.200
    远程 MySQL 主机的 IP 地址(也可以写域名)。
  • 3306
    远程 MySQL 端口(默认是 3306)。
  • remote_db
    远程 MySQL 数据库名(schema 名)。
  • user_info
    远程 MySQL 表名。

4. 跨库查询示例

假设本地有个 local_db.local_orders 表:

SELECT o.order_id, u.name, u.age
FROM local_orders o
JOIN remote_user_info u ON o.user_id = u.id;

这时 remote_user_info 实际就是访问远程 MySQL 的数据了。


5. 注意事项
  • 性能:每次访问 Federated 表都会发 SQL 到远程库 → 网络延迟会影响速度
  • DDL 限制ALTER TABLE 对 Federated 表有限制,无法修改表结构。而且本地表结构必须与远程表完全一样,如果远程表结构变了,本地 Federated 表也要手动同步修改
  • 事务支持:Federated 不支持跨库事务(和 Oracle DBLINK 一样的问题)
  • 安全:连接串的密码是明文存储的,生产环境注意账号权限最小化
  • 删除: 删除本地表,远程表不会删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920006.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux -- 动静态库

一、什么是库1、动静态库概念# 库是写好的现有的,成熟的,可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个⼈的代码都从零开始,因此库的存在意义⾮同寻常。# 本质上来说库是⼀种可执⾏代码的⼆进制形式&#x…

Linux笔记---单例模式与线程池

1. 单例模式单例模式是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这种模式在需要控制资源访问、管理共享状态或协调系统行为时非常有用。单例模式的核心特点:私有构造函数:防止外部通过n…

Linux中的指令

1.adduseradduser的作用是创立一个新的用户。当我们在命令行中输入1中的指令后,就会弹出2中的命令行,让我们设立新的密码,紧接着就会让我们再次输入新的密码,对于密码的输入它是不会显示出来的,如果输入错误就会让我们…

【n8n】Docker容器中安装ffmpeg

容器化部署 n8n 时,常常会遇到一些环境依赖问题。缺少 docker 命令或无法安装 ffmpeg 是较为常见的场景,如果处理不当,会导致流程执行受限。 本文介绍如何在 n8n 容器中解决 docker 命令不可用和 ffmpeg 安装受限的问题,并给出多…

【基础算法】初识搜索:递归型枚举与回溯剪枝

文章目录一、搜索1. 什么是搜索?2. 遍历 vs 搜索3. 回溯与剪枝二、OJ 练习1. 枚举子集 ⭐(1) 解题思路(2) 代码实现2. 组合型枚举 ⭐(1) 解题思路请添加图片描述(2) 代码实现3. 枚举排列 ⭐(1) 解题思路(2) 代码实现4. 全排列问题 ⭐(1) 解题思路(2) 代码实现一、搜…

Node.js异步编程——async/await实现

一、async/await基础语法 在Node.Js编程中,async关键字用于定义异步函数,这个异步函数执行完会返回一个Promise对象,异步函数的内部可以使用await关键字来暂停当前代码的继续执行,直到Promise操作完成。 在用法上,async关键字主要用于声明一个异步函数,await关键字主要…

搭建一个简单的Agent

准备本案例使用deepseek,登录deepseek官网,登录账号,充值几块钱,然后创建Api key可以创建虚拟环境,python版本最好是3.12,以下是文件目录。test文件夹中,放一些txt文件做测试,main.p…

uv,下一代Python包管理工具

什么是uv uv(Universal Virtual)是由Astral团队(知名Python工具Ruff的开发者)推出的下一代Python包管理工具,使用Rust编写。它集成了包管理、虚拟环境、依赖解析、Python版本控制等功能,它聚焦于三个关键点…

单片机的输出模式推挽和开漏如何选择呢?

推挽和开漏是单片机的输出模式,属于I/O口配置的常见类型。开漏(Open-Drain)和推挽(Push-Pull)是两种根本不同的输出电路结构,理解它们的区别是正确使用任何单片机(包括51和STM32)GPI…

java18学习笔记-Simple Web Server

408:Simple Web Server Python、Ruby、PHP、Erlang 和许多其他平台提供从命令行运行的开箱即用服务器。这种现有的替代方案表明了对此类工具的公认需求。 提供一个命令行工具来启动仅提供静态文件的最小web服务器。没有CGI或类似servlet的功能可用。该工具将用于原型设计、即…

深度解析Atlassian 团队协作套件(Jira、Confluence、Loom、Rovo)如何赋能全球分布式团队协作

无穷无尽的聊天记录、混乱不堪的文档、反馈信息分散在各个不同时区……在全球分布式团队中开展真正的高效协作,就像是一场不可能完成的任务。 为什么会这样?因为即使是最聪明的团队,也会遇到类似的障碍: 割裂的工作流&#xff1a…

理解AI 智能体:智能体架构

1. 引言 智能体架构(agent architecture)是一份蓝图,它定义了AI智能体各组件的组织方式和交互机制,使智能体能够感知环境、进行推理并采取行动。本质上,它就像是智能体的数字大脑——整合了“眼睛”(传感器…

Spring Cloud系列—SkyWalking链路追踪

上篇文章: Spring Cloud系列—Seata分布式事务解决方案TCC模式和Saga模式https://blog.csdn.net/sniper_fandc/article/details/149947829?fromshareblogdetail&sharetypeblogdetail&sharerId149947829&sharereferPC&sharesourcesniper_fandc&…

机器人领域的算法研发

研究生期间学习大模型,可投递机器人领域的算法研发、技术支持等相关岗位,以下是具体推荐: AI算法工程师(大模型方向-机器人应用):主要负责大模型开发与优化,如模型预训练、调优及训练效率提升等…

深度学习入门:神经网络

文章目录一、深度学习基础认知二、神经网络核心构造解析2.1 神经元的基本原理2.2 感知器:最简单的神经网络2.3 多层感知器:引入隐藏层解决非线性问题2.3.1 多层感知器的结构特点2.3.2 偏置节点的作用2.3.3 多层感知器的计算过程三、神经网络训练核心方法…

mysql的索引有哪些?

1. 主键索引(PRIMARY KEY)主键索引通常在创建表时定义,确保字段唯一且非空:-- 建表时直接定义主键 CREATE TABLE users (id INT NOT NULL,name VARCHAR(50),PRIMARY KEY (id) -- 单字段主键 );-- 复合主键(多字段组合…

【计算机视觉与深度学习实战】08基于DCT、DFT和DWT的图像变换处理系统设计与实现(有完整代码python3.13可直接粘贴使用)

1. 引言 数字图像处理作为计算机视觉和信号处理领域的重要分支,在过去几十年中得到了快速发展。图像变换技术作为数字图像处理的核心技术之一,为图像压缩、特征提取、去噪和增强等应用提供了强有力的数学工具。离散余弦变换(Discrete Cosine Transform, DCT)、离散傅里叶变…

使用Python实现DLT645-2007智能电表协议

文章目录🌴通讯支持🌴 功能完成情况服务端架构设计一、核心模块划分二、数据层定义三、协议解析层四、通信业务层(以DLT645服务端为例)五、通信层(以TCP为例)使用例子🌴通讯支持 功能状态TCP客…

未来已来:基于IPv6单栈隔离架构的安全互联实践报告

未来已来:基于IPv6单栈隔离架构的安全互联实践报告 报告摘要 随着IPv4地址资源彻底枯竭,全球网络基础设施正加速向IPv6单栈(IPv6-Only)演进。传统“IPv4为主、IPv6为辅”的双栈模式已无法满足数字化转型对海量地址、端到端连接与原…

Ubuntu24.04 安装 Zabbix

Ubuntu24.04 安装 Zabbix 环境: 软件版本Ubuntu24.04.3Nginx1.24.0MySQL8.4.6PHP8.3.6phpMyAdmin5.2.2Zabbix7.4.1 LNMP 1. 更新本地软件包索引并升级已安装软件 更新可用软件包列表 把已安装的软件升级到最新版 安装常用工具 sudo apt update && sud…