「MySQL」- 跨实例关联

  CREATED BY JENKINSBOT

如果在同一个数据库服务器上,关联数据没啥问题。

但是,现在的情况是,两个库运行在不同的数据库服务器上。

方法一、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