mysql-跨库联合查询

目前微服务很火,但是就存在问题.服务拆分,数据库也进行拆分. mysql如果A数据库数据需要联合查询B数据库,应该如何实现呢?

sqlserver

可以使用dblink, 具体不做说明,查资料即可,着重讲解mysql

1. 同实例不同库

1> 直接查询即可
   SELECT * FROM A库.`account` a JOIN B库.`login_log` b ON a.`account_id`=b.`user_id`;

2. 不同实例

1> 查看mysql是否支持federated引擎(执行show engines;可以看到是否支持)
2> 如果支持未开启,需在my.cnf中进行开启并重启服务[[mysqld]最后加上federated]
3> 在本地创建一个与远程的表结构完全一样的表[ENGINE=FEDERATED CONNECTION='mysql://帐号:密码@地址:端口/数据库/表';]
4> 即可进行使用,把本地表当远程表使用即可

FEDERATED 的一些限制

1> 本地的表结构必须与远程的完全一样。 [表名可不一样]
2> 远程数据库目前仅限MySQL
3> 不支持事务
4> 不支持表结构修改

你可能感兴趣的:(数据库)