首先查看是否支持federated 引擎
如果不支持,在my.ini中增加一行
federated
重启mysql即可。
引擎说明
本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. 有点类似Oracle中的
数据库链接(DBLINK). 要允许这个存储引擎, 当构建MySQL时使用--with-federated-storage-engine来configure.
当创建一个FEDERATED表的时候, 服务器在数据库目录创建一个表定义文件. 文件由表的名字开始, 并有一个.frm扩展名.
本地服务器上为访问远程表创建一个FEDERATED表
CREATE TABLE "sys_user" (
"id" varchar(200) NOT NULL,
"name" varchar(200) NOT NULL,
"phone" varchar(200) DEFAULT NULL,
"registTime" datetime DEFAULT NULL,
"email" varchar(200) DEFAULT NULL,
"lastLonginTime" datetime DEFAULT NULL,
"remark" varchar(1000) DEFAULT NULL,
"change_password" tinyint(4) DEFAULT NULL COMMENT '为1时需要修改密码,为0不需要',
"password_date" datetime DEFAULT NULL,
PRIMARY KEY ("id")
) ENGINE=FEDERATED CONNECTION='mysql://username:password@remote_host:3306/db_name/table_name';
除了ENGINE选项应该是FEDERATED, 并且CONNECTION表选项是给FEDERATED指明如何连接到远程服务器上的连接字符串之外,
这个表的结构必须完全与远程表的结构相同.
远程主机信息指明本地服务器要连接到的远程服务器, 数据库和表信息指明哪一个远程表要被作为数据文件来用