MySQL数据库FEDERATED存储引擎能让你访问远程的MySQL数据库而不使用replication或cluster技术(类似于Oracle的dblink),使用FEDERATED存储引擎的表,本地只存储表的结构信息,数据都存放在远程数据库上,查询时通过建表时指定的连接符去获取远程库的数据返回到本地.
查看FEDERATED引擎状态:
FEDERATED引擎默认是不开启的.我们可以通过MySQL客户端软件(Navicat或SQLyog),在查询编辑器中输入指定:
show engines;
查看FEDERATED引擎是否开启,如下图:
开启FEDERATED引擎:
1.Windows系统MySQL开启FEDERATED引擎
在MySQL安装目录重找到配置文件my.ini,在[mysqld]后面增加federated参数,然后重启数据库.
2.Linux系统MySQL开启FEDERATED引擎
找到MySQL配置文件,一般在/etc/my.cnf,通过vim /etc/my.cnf打开配置文件,并在[mysqld]后面添加federated参数,然后重启数据库.
重启之后,进入数据库再次执行命令
show engines;
可以看到数据库已经开启了FEDERATED引擎.
建立映射表
在开启FEDERATED引擎的MySQL服务器上面(数据库登录用户名root1,密码:123456)
1. 创建数据库a,在数据库a中创建表student
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2. 创建数据库b,在数据库b中创建表结构student
CREATE TABLE `student` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=FEDERATED
DEFAULT CHARSET=utf8mb4
CONNECTION='mysql://root1:123456@127.0.0.1:3306/a/student';
请注意创建数据库b中表student时的ENGINE和CONNECTION信息
3. 在数据库a的表student中插入一条记录,在数据库b的student中应该可以看到同样的数据;同理,如果修改数据库b中的student记录,在数据库a的表student中可以看到同样的修改.