两不同服务器上的mysql跨库查询
2016-11-25 16:59
141 查看
业务场景:关联不同数据库中的表的查询
比如说,要关联的表是:机器A上的数据库A中的表A && 机器B上的数据库B中的表B。
这种情况下,想执行“select A.id,B.id from A left join B on ~~~;“那是不可能的,但业务需求不可变,数据库设计不可变,这就蛋疼了。。
解决方案:在机器A上的数据库A中建一个表B。。。
这当然不是跟你开玩笑啦,我们采用的是基于MySQL的federated引擎的建表方式。
建表语句示例:CREATE TABLE `table_name`(......) ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'
如:CREATE TABLE `app` (
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='mysql://root:123456@127.0.0.1:3306/test/app1';
前提条件:你的mysql得支持federated引擎(执行show engines;可以看到是否支持)。
如果有FEDERATED引擎,但Support是NO,说明你的mysql安装了这个引擎,但没启用,去my.cnf文件末添加一行 federated ,重启mysql即可;
如果压根就没有FEDERATED这一行,说明你的mysql就没有安装这个引擎,这就不能愉快的玩耍了,最好去找你们家运维搞定吧,因为接下来的动作比较大,而且我也不知道怎么搞;
解释:通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中,通过这个引擎可以实现类似Oracle 下DBLINK的远程数据访问功能。就是说,这种建表方式只会在数据库A中创建一个表B的表结构文件,表的索引、数据等文件还是在机器B上的数据库B中,相当于只是在数据库A中创建了表B的一个快捷方式。
需要注意的几点:
1. 本地的表结构必须与远程的完全一样。
2.远程数据库目前仅限MySQL
3.不支持事务
4.不支持表结构修改
引用:http://blog.csdn.net/u012109105/article/details/38515293
比如说,要关联的表是:机器A上的数据库A中的表A && 机器B上的数据库B中的表B。
这种情况下,想执行“select A.id,B.id from A left join B on ~~~;“那是不可能的,但业务需求不可变,数据库设计不可变,这就蛋疼了。。
解决方案:在机器A上的数据库A中建一个表B。。。
这当然不是跟你开玩笑啦,我们采用的是基于MySQL的federated引擎的建表方式。
建表语句示例:CREATE TABLE `table_name`(......) ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'
如:CREATE TABLE `app` (
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='mysql://root:123456@127.0.0.1:3306/test/app1';
前提条件:你的mysql得支持federated引擎(执行show engines;可以看到是否支持)。
如果有FEDERATED引擎,但Support是NO,说明你的mysql安装了这个引擎,但没启用,去my.cnf文件末添加一行 federated ,重启mysql即可;
如果压根就没有FEDERATED这一行,说明你的mysql就没有安装这个引擎,这就不能愉快的玩耍了,最好去找你们家运维搞定吧,因为接下来的动作比较大,而且我也不知道怎么搞;
解释:通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中,通过这个引擎可以实现类似Oracle 下DBLINK的远程数据访问功能。就是说,这种建表方式只会在数据库A中创建一个表B的表结构文件,表的索引、数据等文件还是在机器B上的数据库B中,相当于只是在数据库A中创建了表B的一个快捷方式。
需要注意的几点:
1. 本地的表结构必须与远程的完全一样。
2.远程数据库目前仅限MySQL
3.不支持事务
4.不支持表结构修改
引用:http://blog.csdn.net/u012109105/article/details/38515293
相关文章推荐
- java Mysql的跨服务器不同表结构的联合查询,两不同服务器上的不同表查询
- MySQL的一个一条SQL语句查询所有不同种类产品的一部分结果实例的SQL语句
- 不同服务器中的两个表连接查询(SQLSERVER)
- 一台MySql服务器不同数据库之间数据同步_解决方案(Java)
- MYSQL 服务器查询速度慢原因分析与解决办法
- MySQL的四种不同查询的分析
- 数据库跨库与跨服务器查询
- mysql left join查询,比较两个表不同的行
- mysql服务器查询慢原因分析与解决方法
- 不同服务器上的不同数据库的表的查询
- 总结mysql服务器查询慢原因与解决方法
- 同一台服务器安装两个mysql(不同端口)
- 不同服务器上 实现mysql数据表迁移
- MySQL不同表查询,不同数据库查询
- jsoup本地tomcat 可以表单提交抓取查询结果,上传到服务器上可以抓去到页面结果确实查询结果不同 已解决
- 不同的服务器查询数据
- 分页查询 Oracle 和 mySql的不同:
- 不同服务器不同数据库两张表连接查询使用经验 数据库基础教程
- 解决mysql 不同编码查询
- 求一种技术,使得不同服务器的mysql的不同schema底下的表能通过一个接口或类似数据库来取数