【摘要】:事实上,这有很多用处,但是如果需要从一些不同的MySQL服务器上聚合数据,其中有些服务器可能位于网络之外甚至归另外的公司所有,这时该怎么办?为缓解此问题,可以使用MySQL 5.0.3可用的FEDERATED存储引擎,创建远程表的本地指针。因为创建FEDERATED表的过程与其他表稍有不同,所以需要做一些补充解释。为此,在服务器B上创建一个相同的表结构,唯一的区别是该表引擎类型应当为FEDERATED,而不是MyISAM。减少连接管理的麻烦并不是FEDERATED表的唯一目的。
许多环境需要在一台服务器上运行Apache、MySQL和PHP。事实上,这有很多用处,但是如果需要从一些不同的MySQL服务器上聚合数据,其中有些服务器可能位于网络之外甚至归另外的公司所有,这时该怎么办?因为一直都可以连接远程MySQL数据库服务器,这实际上并不是问题。但是,管理每个单独服务器连接的过程很快会变得很麻烦。为缓解此问题,可以使用MySQL 5.0.3可用的FEDERATED存储引擎,创建远程表的本地指针。这样执行查询时就好像表位于本地一样,可以减少与各个远程数据库进行连接的麻烦。
因为创建FEDERATED表的过程与其他表稍有不同,所以需要做一些补充解释。最好通过示例来说明这个过程。假设一个表product位于远程服务器(称为服务器A)的corporate数据库。假设要从另外一个服务器(称为服务器B)访问此表。为此,在服务器B上创建一个相同的表结构,唯一的区别是该表引擎类型应当为FEDERATED,而不是MyISAM。此外,必须提供连接参数,允许服务器B与服务器A上的表通信:
连接字符串应当很容易理解,但有必要再做一些推敲。首先,由用户名remoteuser和密码secret标识的用户必须位于服务器A的mysql数据库中。(www.chuimin.cn)
创建之后,就可以在服务器B上访问products表来访问服务器A的products表。此外,假如连接字符串中指定的用户拥有必要的权限,还可以添加、修改和删除远程表中的数据。
减少连接管理的麻烦并不是FEDERATED表的唯一目的。虽然当前MySQL实现只支持连接MySQL数据库表,但将来应该可以连接其他数据库服务器,例如PostgreSQL或Oracle。
相关推荐