1. 背景
*本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现.
*有点类似Oracle中的数据库链接(DBLINK). 要允许这个存储引擎, 当构建MySQL时使用--with-federated-storage-engine来configure.
*当创建一个FEDERATED表的时候, 服务器在数据库目录创建一个表定义文件. 文件由表的名字开始, 并有一个.frm扩展名.
*无其它文件被创建, 因为实际的数据在一个远程数据库上.
2. 相关特性
*允许本地访问远程 MySQL 数据库中表的数据
*本地不存储任何数据文件
*仅支持 MySQL 对 MySQL 的访问
*不支持异构数据库的访问
*MySQL默认不开启Federated存储引擎
3. 环境
两个MySQL 5.7实例
serverA3306
serverB 3307
4.Federated存储引擎设置
*查看Federated是否开启 [ FEDERATED 中Support状态NO表明引擎未开启]
*配置文件指定开启Federated存储引擎[ /etc/f ]
*重启MySQL 再次查看 [ FEDERATED 中Support状态成YES表明引擎开启成功 ]
5. 部署
*在ServerA上有一个数据库dbtestA,在ServerB上有数据库dbtestB,要在ServerB的数据库dbtestB上建立ServerA的数据库dbtestA上的表tabletestA的数据表链接remote_tabletestA,通过普通用户test连接。
*ServerA创建数据库
*ServerA在dbtestA数据库中创建tabletestA表
*ServerA中创建普通用户并授权dbtestA数据库相关权限
*ServerB 中创建数据库 dbtestB
*ServerB 在dbtestB中创建链接表remote_tabletestA, 使用普通用户test
*在ServerA dbtestA库tableA表中插入数据
*ServerB dbtestB库链接表remote_tabletestA查看
*ServerB服务器中查看链接表remote_tablestestA相关文件
.frm 表定义文件[ Federated链接库本地不产生数据文件]
6. 总结
以需求驱动技术,技术本身没有优略之分,只有业务之分。
本文转自asd1123509133 51CTO博客,原文链接:/lisea/1941801,如需转载请自行联系原作者