前言:
MySQL中有个Federated的存储引擎,使用这个引擎的数据表在本地是不存储任何数据的,而数据全部存储在远程服务器上。
1、查看是否支持Federated存储引擎
MariaDB [(none)]> show engines;
| FEDERATED | YES | FederatedX pluggable storage engine | YES | NO | YES |
#第一个YES表明是支持federated存储引擎的
#如果不支持,则修改MySQL的启动文件my.cnf,在文件最后一行加上 federated=1
#然后重新启动MySQL
2、创建名为 bd 的数据库,作为本地使用
MariaDB [(none)]> create database bd;
#创建名为 bd 的数据库,作为本地数据库使用
3、创建名为 yc 的数据库,作为远程使用
MariaDB [(none)]> create database yc;
#创建名为 yc 的数据库,作为远程存储数据使用
4、配置 yc 数据库
创建一张数据表
MariaDB [(none)]> use yc; #使用 yc 数据库
MariaDB [yc]> create table yc_fed
-> (
-> id int auto_increment not null,
-> c1 varchar(10) not null default '',
-> c2 char(10) not null default '',
-> primary key(id)
-> )
-> engine=innodb #指定该表的存储引擎为innodb,默认是innodb
-> ;
插入数据
MariaDB [yc]> insert into yc_fed(c1,c2) #为表插入三行简单数据
-> values
-> ('a','b'),
-> ('c','d'),
-> ('e','f');
MariaDB [yc]> select * from yc_fed; #查看表中的所有数据
+----+----+----+
| id | c1 | c2 |
+----+----+----+
| 1 | a | b |
| 2 | c | d |
| 3 | e | f |
+----+----+----+
为这个库的表创建用户并赋予权限
MariaDB [yc]> grant select,update,insert,delete on yc.yc_fed to vincen@'127.0.0.1' identified by '123';
#在IP为127.0.0.1(本地)为yc库的yc_fed表创建一个名为vincen的用户,密码为123,赋予的权限为select,update,insert,delete
5、配置 bd 数据库
创建一张数据结构和yc_fed的数据表
MariaDB [yc]> use bd; #使用 bd 数据库
MariaDB [bd]> create table bd_fed #创建一张名为bd_fed的表,注意数据结构要和yc_fed的一致
-> (
-> id int(11) not null auto_increment,
-> c1 varchar(10) not null default '',
-> c2 char(10) not null default '',
-> primary key(id)
-> )
-> engine=federated connection='mysql://vincen:[email protected]:3306/yc/yc_fed'
#指定这个表的存储引擎为Federated,以vincen用户,密码为123,在本地连接 yc 数据库中的 yc_fed 数据表
-> ;
6、在 bd_fed 表上查询数据
MariaDB [bd]> select * from bd_fed; #查看 bd 库的 bd_fed 表的数据
+----+----+----+
| id | c1 | c2 |
+----+----+----+
| 1 | a | b |
| 2 | c | d |
| 3 | e | f |
+----+----+----+
3 rows in set (0.02 sec)
#创建这个表后并没有插入任何数据
#这有三条数据记录,和 yc 库中的 yc_fed 表中的数据是一样的
7、删除 bd_fed 表中其中一行数据
MariaDB [bd]> delete from bd_fed where id = 2; #在 bd_fed 表中删除id=2的数据
MariaDB [bd]> select * from bd_fed; #查看执行删除操作后的 bd_fed 表
+----+----+----+
| id | c1 | c2 |
+----+----+----+
| 1 | a | b |
| 3 | e | f |
+----+----+----+
#可以看到id为2的数据行已经删除
8、回到 yc_fed表中查看数据
MariaDB [bd]> use yc; #使用 yc 数据库
MariaDB [yc]> select * from yc_fed; #查看 yc_fed 表
+----+----+----+
| id | c1 | c2 |
+----+----+----+
| 1 | a | b |
| 3 | e | f |
+----+----+----+
#对比刚开始插入数据时,现在这个表少了id为2的数据