从两个不同的服务器join表

我有两个不同的服务器server1server2 ,现在我有db1server1db2server2 。 我正在尝试像这样在MySQL中join这两个表。

 Select a.field1,b.field2 FROM [server1, 3306].[db1].table1 a Inner Join [server2, 3312].[db2].table2 b ON a.field1=b.field2 

但是我得到错误。 是可以在MYSQL中。

是的,这可能在MySQL中。

以前也有类似的问题。 你必须使用FEDERATED ENGINE来做到这一点。 这个想法是这样的:

您必须拥有基于另一个远程位置的表的联合表才能使用您想要的方式。 表的结构必须完全相同。

 CREATE TABLE federated_table ( id INT(20) NOT NULL AUTO_INCREMENT, name VARCHAR(32) NOT NULL DEFAULT '', other INT(20) NOT NULL DEFAULT '0', PRIMARY KEY (id), INDEX name (name), INDEX other_key (other) ) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table'; 

[来源回答]

复制将是替代和适当的解决scheme。

server1 – db1 – >复制到server2。 (现在db1和db2将在同一台服务器server2中,join会很容易)。

注意:如果server2足够能够从存储/进程等方面承担db1的负载,那么可以进行复制。 作为@brilliand提到的是,联邦将会做许多手工工作,并且进程缓慢。