Federate介绍
Federate是一种存储引擎,默认不开启
Federate允许本地访问远程mysql数据库中表的数据
本地只存结构,不存数据
不支持异构数据库,本地的表结构必须与远程的完全一样(只支持mysql)
不支持事务,不支持表结构修改
适用于不同系统或组织之间的互联互通
不直接设计数据,更加安全
连接方式:在建表语句尾部添加enging=federate connection='MYSQL://用户名:密码@IP:端口/数据库名/表名;
1.开启federate
在my.cnf中加入
[mysqld]
federated
systemctl restart mysqld.service
show engines;
2.使用federate
环境:
A库 192.168.10.115:3306 wsdb1
B库 192.168.10.115:3306 wsdb2
C库 192.168.10.115:3306 wsdb3
create database wsdb1;
create database wsdb2;
create database wsdb3;
grant all privileges on wsdb1.* to root@’%’;
grant all privileges on wsdb2.* to root@’%’;
grant all privileges on wsdb3.* to root@’%’;
- 在db2创建一张表
use wsdb2;
create table wst2(
-> id int not null auto_increment primary key,
-> name CHAR(20) not null) engine myisam;
在db3同样创建表
use wsdb3;
create table wst3(
id int not null auto_increment primary key,
name CHAR(20) not null) engine myisam;
在db1创建federated表,来连接db2和db3的表
use wsdb1;
create table wst11(
id int not null auto_increment primary key,
name CHAR(20) not null )
engine federated connection=’mysql://root:root@192.168.10.115:3306/wsdb2/wst2’;
create table wst12(
id int not null auto_increment primary key,
name CHAR(20) not null )
engine federated connection=’mysql://root:root@192.168.10.115:3306/wsdb3/wst3’;
4.验证
在表中插入信息
insert into wst11(name) values(‘wangsheng2’);
insert into wst12(name) values(‘wangsheng3’);
commit;
返回库wsdb2和wsdb3,查看表中的数据是否被修改了
use wsdb2;
select * from wst2;
+—-+————+
| id | name |
+—-+————+
| 1 | wangsheng2 |
+—-+————+
use wsdb2;
select * from wst3;
+—-+————+
| id | name |
+—-+————+
| 1 | wangsheng3 |
+—-+————+
通过文件查看数据库的结构
ls /usr/local/mysql/data/wsdb2
db.opt wst2.frm wst2.MYD wst2.MYI
ls /usr/local/mysql/data/wsdb3
db.opt wst3.frm wst3.MYD wst3.MYI
ls /usr/local/mysql/data/wsdb1
db.opt wst11.frm wst12.frm
可见wsdb1只有表结构数据而没有正儿八经的数据和索引