郑州推广网站/seo方案书案例
有的时候业务场景需要使用跨机器跨库查询,这时候就想到了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 mysql
OPTIONS (HOST 'IP地址',PORT 端口,USER '用户名',PASSWORD '密码',DATABASE '数据库'
);
接下来使用刚才创建的server 来创建dblink
CREATE TABLE `test` (`id` int(11) DEFAULT NULL
) ENGINE=FEDERATED CONNECTION ='Federated/test';
这时候就可以查询在目标端查询源端的test的表了