| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.01 sec)
一般这种情况就是有FEDERATED引擎但是没有启用,启用很简单,在my.cnf或my.ini中的[mysqld]段中修改添加,如下:
[mysqld]
……
federated
……
重启MySQL,此时再看就启用了FEDERATED引擎
此时再本地数据库建虚拟表用来链接远程数据库,其表结构可以通过在远程数据库中通过SHOW CREATE TABLE来查看DDL,但是要注意去掉主键、索引、自增字段,但是本地的虚拟表的表名可以不同,如远程数据库:192.168.2.25下的my_test库下有一张book_price表,远程数据库上的DDL:
CREATE TABLE `book_price` (
`book_name` varchar(255) NOT NULL DEFAULT '',
`book_price` decimal(11,3) NOT NULL DEFAULT '0.000'
) ENGINE=InnoDB DEFAULT CHARSET=utf8
在本地数据库中的DDL如下:
CREATE TABLE `book_price_local` (
`book_name` varchar(255) NOT NULL DEFAULT '',
`book_price` decimal(11,3) NOT NULL DEFAULT '0.000'
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='mysql://root:password#@192.168.2.25:3306/my_test/book_price'
#源端表DDL ENGINE=federated CONNECTION= 'mysql://用户:密码@IP地址:端口/库名称/表名称';
这里需要注意的是CONNECTION后则是远程数据库的连接信息,这里要注意的是避免使用带‘@’的密码以免混淆,效果如下: