MySQL同个服务器下,要进行跨数据库进行查询,只需在表前加上数据库名就可以。
如果要在跨服务器查询,服务器A查询服务器B,则需要在服务器A开启federated引擎(默认关闭)以进行映射表查询。
MySQL执行show engines命令可以查看federated引擎的是否关闭状态。
启用FEDERATED引擎,Linux通过vim /etc/my.cnf修改(Windows修改my.ini),在[mysqld] 下加上federated后保存
并重启数据库服务
service mysqld restart
在mysql中创建远程服务器数据库中的需要映射的表,数据结构一样,映射表名称可以不同。
CREATE TABLE `user_remote` ( `id` bigint(20) NOT NULL COMMENT '主键', `name` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名', `create_date` datetime NULL DEFAULT '1000-01-01 00:00:00' COMMENT '创建时间', `created_by` bigint(20) NULL DEFAULT NULL COMMENT '创建人' ) ENGINE=FEDERATED CONNECTION='mysql://root:passward@172.16.10.10:3306/db/user';
ENGINE=FEDERATED,使用federated引擎,修改用户名,密码,地址,端口号,数据库,表
这样就可以将远程的user表数据实时映射到hn_user表中,实现mysql跨服务器查询数据。