一、FEDERATED简介
federated就像他的名字所说"联盟",意思就是:把两个不同区域的数据库联系起来,以致可以访问在远程数据库的表中的数据,而不是本地的表。
二、安装FEDERATED存储引擎
如果你还没有安装MySQL的话,可以添加使用--with-federated-storage-engine参数来编译源码,如果还没有安装则,直接在my.ini中加入federated,即可开启。
三、FEDERATED存储引擎的描述
当你创建一个FEDERATED表的时候,服务器在数据库目录创建一个表定义文件。文件由表的名字开始,并有一个.frm扩展名。无其它表被创建,因为实际的数据在一个远程数据库上。这不同于为本地表工作的存储引擎的方式。
对于本地的数据录表,数据文件是本地的。例如,如果你创建一个名为user的MyISAM表,MyISAM处理器创建一个名为users.MYD的数据文件。对本地表读,插入,删除和更新在本地数据文件里的数据的处理器和记录被以对处理器的特定格式存储。 为了读记录,处理器必须把数据分解进列。为了写记录,列值必须被转换到被处理器使用的行格式并且被写进本地的数据文件。
使用MySQL FEDERATED存储引擎,没有对表的本地数据文件(比如,没有.MYD文件)。取而代之地,一个远程数据库存储那些正常地应该在表中的数据。这使得MySQL客户端API来读,删除,更新和插入数据的使用成为必要。数据取回被通过SELECT * FROM tbl_name SQL语句来初始化。要读这个结果,通过使用mysql_fetch_row() C API函数,行被一次取一个,然后从SELECT结果包中的列转换成FEDERATED处理器期望的格式。
基本流程如下:
1. SQL调用被本地发布
2. MySQL处理器API (数据以处理器格式)
3. MySQL客户端API (数据被转换成SQL调用)
4. 远程数据库-> MySQL客户端API
5. 转换结果包(如果有的话)到处理器格式
6. 处理器 API -> 结果行或受行影响的对本地的计数
四、如何使用FEDERATED表
使用FEDERATED表的步骤是非常简单的。通常,你运行两个服务器,要么在同一个主机上,要么在不同主机上。(一个FEDERATED表使用其它被同一服务器管理的表也是可能的。虽然只有极少的点要这么做)。
首先,你必须在你想要用FEDERATED表访问的远程服务器上有一个表。

接着,在本地服务器上为访问远程表创建一个FEDERATED表:
create table vtiger_greenwork(
id int(10) not null primary key,
type varchar(50) default null,
uploadtime date default null,
name varchar(30) default null,
remark text default null,
userid varchar(30) default null)
ENGINE=FEDERATED connection='mysql://root:password@192.168.1.100:3306/sjcrm/vtiger_greenwork';
(注意: CONNECTION 替代 用在先前版本的MySQL里的COMMENT)。 (注意: CONNECTION 替代 用在先前版本的MySQL里的COMMENT)。
Look:
oh year!
192.168.1.100上sjcrm数据库vtiger_greenwork表中的数据被查出来了。
本文介绍了FEDERATED存储引擎的概念及其安装方法。详细解释了FEDERATED存储引擎的工作原理,包括如何创建FEDERATED表及其实现远程数据库访问的过程。最后给出了一个具体的创建FEDERATED表的例子。

1299

被折叠的 条评论
为什么被折叠?



