前言:

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:123@127.0.0.1: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的数据

 

10-07 14:28