当前位置: 首页 > news >正文

【MySQL】存储引擎 - FEDERATED详解

📢博客主页:https://blog.csdn.net/2301_779549673
📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 JohnKi 原创,首发于 CSDN🙉
📢未来很长,值得我们全力奔赴更美好的生活✨

在这里插入图片描述

在这里插入图片描述

文章目录

  • 🏳️‍🌈一、FEDERATED 存储引擎
  • 🏳️‍🌈二、创建 FEDERATED 表
  • 🏳️‍🌈三、 FEDERATED 注意事项
  • 👥总结


🏳️‍🌈一、FEDERATED 存储引擎

允许访问远程 MySQL 数据库中的数据,

在不使用复制或集群技术的情况下,FEDERATED 存储引擎可以实现对 远程MySOL数据库中数据的访问,以多个物理服务器为基础创建一个逻辑数据库

当查询 FEDERATED 表时,将会从远程数据库获取数据,非常适合分布式或数据集市环境。

如图所示:
在这里插入图片描述

默认不支持,可以在启动时通过命令行选项 --federated选项文件的配置 来启用

在这里插入图片描述

🏳️‍🌈二、创建 FEDERATED 表

本地配置文件中的[mysqld]节点下加入 federated=1 来启用 FEDERATED 引擎,之后重启 MySQL 服务

# 配置⽂件路径 /etc/mysql/mysql.cnf
[mysqld]
federated=1 #加⼊配置root@VM-20-5-ubuntu:/var/lib/mysql/test_db# systemctl restart mysql
root@VM-20-5-ubuntu:/var/lib/mysql/test_db# systemctl status mysql
● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2025-05-09 15:38:23 CST; 30s agoDocs: man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.htmlProcess: 75856 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS)Main PID: 75895 (mysqld)Status: "Server is operational"Tasks: 38 (limit: 2219)Memory: 364.2MCPU: 808msCGroup: /system.slice/mysql.service└─75895 /usr/sbin/mysqldMay 09 15:38:22 VM-20-5-ubuntu systemd[1]: Stopped MySQL Community Server.
May 09 15:38:22 VM-20-5-ubuntu systemd[1]: mysql.service: Consumed 1.546s CPU time.
May 09 15:38:22 VM-20-5-ubuntu systemd[1]: Starting MySQL Community Server...
May 09 15:38:23 VM-20-5-ubuntu systemd[1]: Started MySQL Community Server.

在这里插入图片描述

  • 在远程服务器上为用户加入远程访问权限,安全性与权限管理专题详细介绍
  • 在MySQL8.0中 InnoDB 是默认引擎,所以在创建表时需要指定 ENGINE=FEDERATED;
  • 创建 FEDERATED 表时,本地的表定义远程服务器的表定义相同,但数据存储在远程服务!
  • 本地表定义中使用 CONNECTION 连接字符串指向远程表的连接字符串;
  1. 创建运程表
# 远程服务器上的建表语句
CREATE TABLE t_federated (
id INT(20) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL DEFAULT '',
INDEX name (name)
)
ENGINE=MyISAM
DEFAULT CHARSET=utf8mb4;

在这里插入图片描述
2. 建立远程连接用户

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 创建本地逻辑表
    注意,这里得需要用到内网穿透技术,让云服务器访问到本地。
# 本地服务器上的建表语句
CREATE TABLE t_federated (
id INT(20) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL DEFAULT '',
INDEX name (name)
)
ENGINE=FEDERATED
DEFAULT CHARSET=utf8mb4
CONNECTION='mysql://federated:Fed123!!!@192.168.100.242:3306/test_db/t_federated'; # 指定远程服务器的连接--CONNECTION='mysql://fed_user@remote_host:3306/test_database/test_table';

连接字符串的格式:

  • scheme://user_name[:password@host_name[:port num]/db nameltbl namescheme: 连接协议,目前只支持mysql;
  • user_name: 用于连接远程服务器的用户名,注意:这个用户在远程服务器已创建,并授予了相应的操作权限;
  • password: 用户的密码:
  • host_name: 远程服务器的IP地址;
  • port_num: 远程服务器MySQL服务的端口号;
  • db_name: 远程表所在的数据库名;
  • tbl_name: 远程表名,本地表名与远程表名可以不同,但建议保持一致。

不会生成数据文件,表定义在数据字典中,生成.sdi为后缀的表信息描述文件(JSON格式)
建表成功后,对本地表的增删改查和操作远程表一样

🏳️‍🌈三、 FEDERATED 注意事项

  • 远程服务器必须是MySQL服务器;
  • 使用 CONNECTION 字符串时,密码中不能使用"@"字符
  • DROP TABLE 只删除本地表,不删除远程表;
  • 不支持事务

👥总结

本篇博文对 【MySQL】存储引擎 - FEDERATED详解 做了一个较为详细的介绍,不知道对你有没有帮助呢

觉得博主写得还不错的三连支持下吧!会继续努力的~

相关文章:

  • 笔记,麦克风的灵敏度
  • allure生成测试报告(搭配Pytest、allure-pytest)
  • 遗传算法(GA)
  • 第十六章,网络型攻击防范技术
  • 传统数据展示 vs 可视化:谁更打动人心?
  • TCP套接字通信核心要点
  • 多线程面试题总结
  • ⭐️⭐️⭐️【课时1:大模型是什么?】学习总结 ⭐️⭐️⭐️ for《大模型Clouder认证:基于百炼平台构建智能体应用》认证
  • NetSuite Saved Search如何在Criteria中利用Expressions处理不同Transaction之间的关系?
  • 【深度学习新浪潮】智能追焦技术全解析:从算法到设备应用
  • 集群/微服务/分布式
  • 芋道框架 账号未登录、租户标识未传递
  • 华为云Flexus+DeepSeek征文|从开通到应用:华为云DeepSeek-V3/R1商用服务深度体验
  • 七、Hadoop 历史追踪、数据安全阀与 MapReduce初体验
  • 密码学--AES
  • 数据结构【二叉搜索树(BST)】
  • C语言| sizeof(array)占多少字节
  • K8S - GitLab CI 自动化构建镜像入门
  • 打造网络安全堡垒,企业如何应对DDoS、CC、XSS和ARP攻击
  • C++之运算符重载实例(日期类实现)
  • 花2万多在海底捞办婚礼,连锁餐企要抢酒楼的婚宴生意?
  • 沃旭能源因成本上升放弃英国海上风电项目,或损失近40亿元
  • 三大猪企4月生猪销量同比均增长,销售均价同比小幅下降
  • 时隔14个月北京怀柔区重启供地,北京建工以3.59亿元摘得
  • 中日有关部门就日本水产品输华问进行第三次谈判,外交部回应
  • 见微知沪|优化营商环境,上海为何要当“细节控”自我加压?