如果在同一个数据库服务器上,关联数据没啥问题。
但是,现在的情况是,两个库运行在不同的数据库服务器上。
方法一、Manually
分别在不同的机器上执行查询。
然后,手动关联(使用编程、EXCEL等等手段)。
方法二、FEDERATED
TODO 使用FEDERATED存储引擎。
「How to join two tables in different server?」
「How to connect 2 different databases and Join 2 tables that are on different servers?」
「Join tables from two different server」
「MySQL Cross Server Select Query」
「MySQL — Joins Between Databases On Different Servers Using Python?」
「Join operation for two different database tables on different server #1696」
「How can I select data from two differents servers?」
「MySQL Federated table | MySQL join across servers」
方法三、MyCat
(1)同实例,不同库(不可行,场景不符)
https://blog.csdn.net/boonya/article/details/73200994
(2)不同实例,同一库名(不可行,分库分表的数据操作,与插入相关的内容,与场景不符)
https://blog.csdn.net/c1052981766/article/details/80326197
(3)在MyCat分库分表后的关联操作(不可行,如作者「3.任意表JOIN」部分中所述)
https://blog.csdn.net/u013235478/article/details/53178657
(4)关于MyCat的四种JOIN操作可以参考官方「PDF」手册
MyCat以四种方式处理JOIN操作:
Column 1 | |
---|---|
全局表 | 不可行。本来就是跨实例的“大表”,如果同步到各个节点上还用MyCat干嘛。 |
ER Jion | 不可行,只能在分库分表的情况下使用。(需要配置分片规则,即使你只有一张表) |
Share Join | 不可行,只支持两张表关联。(原理:分析SQL语句,拆分执行) |
catlet | 不可行,使用MyCat的Java API需要编码实现。 |
方法四、多源复制
使用MySQL 5.7或者Otter进行多源复制。将数据复制到同一个数据库中。
附加说明
linked servers – 人家MS SQL是另外一回事,人家支持这种操作。
sp_addlinkedserver: http://msdn.microsoft.com/en-us/library/ms190479.aspx
https://www.youtube.com/watch?reload=9&v=lCte36Y-ssQ
参考文献
Join operation for two different database tables on different server #1696