MySQL实现跨服务器查询

案例

B服务器数据库进行查询时需要用到A服务器数据库表数据,需要对数据进行夸服务器查询,办法有很多,这里简单介绍下通过存储引擎层实现跨服务器查询

A服务器(192.168.1.76)

B服务器(192.168.1.77)


1) MySQL实例A建立测试表

mysql> create database lianxi;

mysql> use lianxi

mysql> CREATE TABLE tab_test (

id     int(20) NOT NULL auto_increment,

name   varchar(32) NOT NULL default '',

PRIMARY KEY (id)

) ENGINE=innodb;

mysql> insert into tab_test values(null,'test1');

2) MySQL实例B建立FEDERATED引擎表
--确认FEDERATED引擎已启用:
mysql> show engines;
..

| FEDERATED  | YES     | Federated MySQL storage engine  

--如果未启用, 先确保configure MySQL时加了--with-federated-storage-engine选项, 另外还确保启动mysqld时加了--federated参数, 

或者在my.cnf里[mysqld]段后面加了federated参数, 如下, 然后重启mysqld:
--------------------------------
[mysqld]

federated
--------------------------------

mysql> create database lianxi;

mysql> use lianxi

mysql> CREATE TABLE tab_test_fed (

    id     int(20) NOT NULL auto_increment,

    name   varchar(32) NOT NULL default '',

    PRIMARY KEY (id)

) ENGINE=FEDERATED connection = 'mysql://root:123@192.168.41.197:3306/db_fed/tab_test';

除了ENGINE选项应该是FEDERATED, 并且CONNECTION表选项是给FEDERATED指明如何连接到远程服务器上的连接字符串之外, 

这个表的结构必须完全与远程表的结构相同.  

远程主机信息指明本地服务器要连接到的远程服务器, 数据库和表信息指明哪一个远程表要被作为数据文件来用. 在这个例子中. 

远程服务器被指定来作为远程主机在3306端口上运行, 所以要启动服务器, 让它监听3306端口. 

在CONNECTION选项中的连接字符串的一般形式如下(密码和端口号是可选的): 

mysql://user_name[:password]@host_name[:port_num]/db_name/tbl_name

--测试是否可以访问:


mysql> select * from tab_test_fed;

+----+-------+
| id | name  |
+----+-------+
|  1 | test1 |
+----+-------+


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值