MySQL不同服务器上的两个表进行关联

MySQL不同服务器上的两个表进行关联

  • 一、首先不在一个服务器上的两个表无法直接关联
  • 二、曲线救国
  • 三、启动FEDERATED 引擎
  • 四、建立映射表
  • 五、使用关联查询

一、首先不在一个服务器上的两个表无法直接关联

举例:
情景描述:

数据库A 中有一张 point_log 表,表中 member_id 为 用户id,数据库A 在 a服务器 中;
数据库B 中有一张 member 表,表中 member_id 为 用户id,数据库B 在 b服务器 中;
需要关联point_log表和member表,找出每个用户的point记录

结论:

两张表无法直接使用 leftjoin

二、曲线救国

  1. MySQL映射表
federated引擎
  1. 查看服务器安装的MySQL是否安装了federated引擎
show engines;

MySQL不同服务器上的两个表进行关联_第1张图片
如上图所示: FEDERATED 为 NO,表示安装了该引擎,但是没有启动

三、启动FEDERATED 引擎

  1. 修改MySQL的配置文件–这里以window系统为例
    说明: 本地环境使用PHPstudy搭建
    MySQL不同服务器上的两个表进行关联_第2张图片

  2. 修改my.ini文件
    在这里插入图片描述

  3. 查找自己的my.ini文件
    MySQL不同服务器上的两个表进行关联_第3张图片找到mysql的数据存放路径,会找到相应的my.ini文件

  4. 重启mysql

四、建立映射表

  1. 在point_log所在的服务器中新建数据库,为了不污染原有的数据
CREATE DATABASE test;
  1. 在新建的数据库中创建member表的映射
CREATE TABLE `member` (
  `member_id` varchar(22) NOT NULL,
) ENGINE=FEDERATED    
CONNECTION='mysql://root:pwd@member表的服务器地址:3306/bdname/member';

五、使用关联查询

  1. 关联查询和平时一样,只不过是在member表前加上了表的数据库名
SELECT * FROM `point_log` LEFT JOIN `test`.`member` ON `test`.`member`.`member_id` = `point_log`.`member_id`;

你可能感兴趣的:(MySQL,数据表映射,不同服务器数据表的关联)