1. 简介
mysql 提供了一个类似Oracle中的数据库链接(DBLINK)功能的存储引擎–FEDERATED。当我们创建一个以FEDERATED为存储引擎的表时,服务器在数据库目录只创建一个表定义文件。文件由表的名字开始,并有一个frm扩展名。无其它文件被创建,因为实际的数据在一个远程数据库上。这不同于为本地表工作的存储引擎的方式。
对本地的Federated存储表操作增删改,实际上这些命令都被发到主服务器上的数据库执行,本地的Federated存储表会映射最新的远程数据;
2. 查询Federated引擎是否启动支持
show engines;
r
3.如果没有启动支持则按照下面的方法进行启动
a)找到my.ini
文件,一般mysql
的 my.ini
位置在 C:\Program Files\MySQL\MySQL Server
的安装目录下,但是mysql5.7
的安装目录在C:\ProgramData\MySQL\MySQL Server 5.7
的目录下,mysql5.7
以上的版本可能同5.7
b)将federated
添加到mysqld
后面。然后重启MySQL
服务
c)执行show engines
命令,如果FEDERATED
对应的Support
值变为YES
,则表示成功
4.执行建表语句,然后就可以通过此表远程访问另一台主机上的表了
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`u_id` int(8) NOT NULL AUTO_INCREMENT,
`u_user_name` varchar(128) NOT NULL,
`u_password` varchar(128) NOT NULL,
`u_mobile` varchar(128) NOT NULL,
`u_email` varchar(128) DEFAULT NULL,
`u_create_time` datetime NOT NULL,
`u_update_time` datetime NOT NULL,
`u_delete_flag` tinyint(1) NOT NULL,
PRIMARY KEY (`u_id`)
)
ENGINE=FEDERATED
AUTO_INCREMENT=3
DEFAULT CHARSET=utf8
CONNECTION='mysql://root:admin@192.168.1.106:3306/user/user';
(mysql://用户名:密码@IP:port/dbName/tableName)
创建的表只能进行查询,不能删除或修改。如果远程表修改或新增,数据可以实时查看。但是大数据量关联查询广播表时,会存在性能问题