MYSQL 连接两个不同服务器的表
一、FEDERATED引擎
Ⅰ、开启federated引擎
找到配置文件 my.ini
运行下面的语句
show variables like 'datadir';
一般配置文件在Data的同一级。
打开配置文件,在[mysqld]新增一行federated。
注意:是mysqld不是mysql;
Ⅱ、查看引擎是否开启
sql命令:show engines;
Ⅲ、创建表
比如:A服务器上的thing表要和B服务器上的test表进行连接查询
A服务器中创建test表。
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
字段
) ENGINE = FEDERATED
CONNECTION='mysql://数据库用户名:密码@地址:端口/数据库名/要映射的表名';
Ⅳ、查询
select * from test left join thing on test.id = thing.test_id;
Ⅴ、注意事项
- 使用FEDERATED存储引擎的表,本地只存储表的结构信息,数据都存放在远程数据库上,查询时通过建表时指定的连接符去获取远程库的数据返回到本地。
- FEDERATED表不支持事务。
- 本地FEDERATED表无法知道远程库中表结构的改变。
- FEDERATED表不支持ALTER TABLE语句或者任何DDL语句。
- 被复制的表不能新增字段
- 远程的表密码不能包含@,下篇文章有解决方案。
官方文档: http://dev.mysql.com/doc/refman/5.7/en/federated-usagenotes.html