mysql federated存储引擎引擎

federated存储引擎引擎:

本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. 有点类似Oracle中的

数据库链接(DBLINK). 要允许这个存储引擎, 当构建MySQL时使用--with-federated-storage-engine来configure.  

当创建一个FEDERATED表的时候, 服务器在数据库目录创建一个表定义文件. 文件由表的名字开始, 并有一个.frm扩展名.

无其它文件被创建, 因为实际的数据在一个远程数据库上. 使用FEDERATED表的步骤是非常简单的. 通常, 运行两个服务器,

要么在同一个主机上, 要么在不同主机上. 

 

1、查看是否安装了federated引擎

show engines;

从中可以看出federated引擎没有开启.

2.开启federated引擎

  windows下在my.ini中加入federated,重启服务;

  linux中,需要编译时加入选项,再在my.ini中加入federated,重启服务.

       show engines;

mysql federated存储引擎引擎_第1张图片

FEDERATED支持及不支持的如下:  

·远程服务器必须是一个MySQL服务器. FEDERATED对其它数据库引擎的支持可能会在将来被添加.  

·FEDERATED表指向的远程表在通过FEDERATED表访问它之前必须存在.  

·一个FEDERATED表指向另一个FEDERATED表是可能的, 但是必须小心不要创建一个循环.  

·没有对事务的支持.  

·如果远程表已经改变, 对FEDERATED引擎而言是没有办法知道的. 这个的原因是因为这个表必须象数据文件一样工作,

除了数据库其它任何都不会被写入. 如果有任何对远程数据库的改变, 本地表中数据的完整性可能会被破坏.  

·FEDERATED存储引擎支持SELECT,INSERT,UPDATE,DELETE和索引. 它不支持ALTER TABLE,DROP TABLE或任何

其它的数据定义语言语句. 当前的实现不使用预先准备好的语句.  

·执行使用SELECT,INSERT,UPDATE和DELETE, 但不用HANDLER.  

·FEDERATED表不能对查询缓存不起作用.  

这些限制中的一些在FEDERATED处理机的将来版本可能被消除. 

3.建立远程数据表链接

假如:在ServerA上有一个数据库dbtestA,在ServerB上有数据库dbtestB,要在ServerB的数据库dbtestB上建立 ServerA的数据库dbtestA上的表tabletestA的数据表链接remote_tabletestA,语句如下:

ServerB:dbtestB库创建表remote_tabletestA

create table remote_tabletestA(

       ……

)engine=federated connection = 'mysql://user:password@ServerA:3306/dbtestA/tabletestA'

注意'mysql://user:password@ServerA:3306/dbtestA/tabletestA' 区别大小写

4.使用远程数据表链接

  如上例,直接在ServerB的数据库dbtestB上对表remote_tabletestA进行操作,即是操作ServerA上数据库dbtestA的表tabletestA;

      select * from remote_tabletestA 查一下试试吧!!

你可能感兴趣的:(mysql,数据库,服务器,存储,insert,引擎)