本文共 805 字,大约阅读时间需要 2 分钟。
有的时候业务场景需要使用跨机器跨库查询,这时候就想到了mysql有没有类似oracle 的dblink的功能,答案当然是肯定了,下面就简单介绍在mysql 下如何使用dblink,
首先目标库需要支撑FEDERATED
安装federated插件:
mysql>install plugin federated soname ‘ha_federated.so’;
ERROR 1125 (HY000): Function ‘federated’ already exists
说明已经安装过了,但没有启用
只需要在my.cnf 下添加 federated 然后重启数据库即可:
下面就是创建dblink,
有2种方式,
方式一:
CREATE TABLE `test` ( `id` int(11) DEFAULT NULL) ENGINE=FEDERATED CONNECTION='mysql://用户名:密码@IP:端口/数据库/表名'
但有的时候我们的密码会包含一些特殊字符串,比如@,则会报错:is not in the correct format
那么这时候就想到另外一个方法:
方法二:
首先创建Federated Server
CREATE SERVER `Federated `FOREIGN DATA WRAPPER mysqlOPTIONS ( HOST 'IP地址', PORT 端口, USER '用户名', PASSWORD '密码', DATABASE '数据库');
接下来使用刚才创建的server 来创建dblink
CREATE TABLE `test` ( `id` int(11) DEFAULT NULL) ENGINE=FEDERATED CONNECTION ='Federated/test';
这时候就可以查询在目标端查询源端的test的表了
转载地址:http://qzhji.baihongyu.com/