mysql跨服务器关联查询
为什么有这样奇葩的需求呢, 场景是这样的, 公司当前的系统架构为微服务架构, 然后需要写统计时就非常恶心, 特别是各自分类下的各种支付方式的金额, 然后支付表在另一个服务器上门的数据库, 虽然通过php也可以两边拿数据, 但是写统计时在微服务架构下要多恶心有多恶心, 无法通过一条sql得到结果太过于麻烦, 终于还是在网络上找到了办法, 手动写一遍记录一下
Mysql的跨服务器 关联查询--Federated引擎
1.确认开启Federated引擎
查询FEDERATED功能是否开启:
show ENGINES;
2、如果状态为NO则需修改my.ini文件,增加一行federated配置:
在[mysqld]下面添加 federated,然后重启mysql
3.建立映射表
注意:
- 表名可以不同,但表结构要完全相同
- ENGINE=InnoDB 要改成 ENGINE=FEDERATED
- 添加最下面一行:CONNECTION='mysql://用户名(数据库用户名):密码(数据库密码)@ip:端口/数据库名/表名'
4.结果(此时数据已经映射过来了)
注意, 虽然可以这样干, 但是会有问题, 每次哪怕查询很少的数据时, 都会把目标的所有数据拉过来, 如果表很小还行, 表很大不适合