当前位置:首页 » Mysql技术教程

【Mysql之跨节点查询数据】

2017-07-28 08:21 本站整理 浏览(59)

Mysql之跨主机查询,mysql的dblink的功能目前是具有federated存储引擎 。federated属于 MySQL的一种特殊引擎,利用它可将本地数据表映射至远程 MySQL 数据表,从而就可以解决应用程序中繁多的跨机器连接数据库问题


 

查看本地数据库是否支持跨节点查询

 修改,本地数据库配置,再次验证


 

跨节点查询方案一:

方案一验证:

跨节点查询方案二:


 建表语句

方案二验证:

 

高级功能:

Server信息的存储


 Server信息的删除


 针对数据的操作


 


 
 备注:

SHOW ENGINES

 

 

CREATE TABLE T1 (

  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `hash` varchar(32) NOT NULL DEFAULT '',

  `name` varchar(200) NOT NULL DEFAULT '',

  `input_string` varchar(255) DEFAULT NULL,

  `type_id` tinyint(2) NOT NULL DEFAULT '0',

  PRIMARY KEY (`id`),

  KEY `name` (`name`)

)  ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.1.101:3306/cacti/data_input';

 

 

select * from t1

 

CREATE SERVER Linux_Mysql

    FOREIGN DATA WRAPPER mysql

    OPTIONS (HOST '192.168.1.101',USER 'root',PASSWORD 'root' ,PORT 3306,DATABASE 'cacti');

 

drop server Linux_Mysql

 

CREATE TABLE T2 (

  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `hash` varchar(32) NOT NULL DEFAULT '',

  `name` varchar(200) NOT NULL DEFAULT '',

  `input_string` varchar(255) DEFAULT NULL,

  `type_id` tinyint(2) NOT NULL DEFAULT '0',

  PRIMARY KEY (`id`),

  KEY `name` (`name`)

)  ENGINE =FEDERATED CONNECTION='Linux_Mysql/data_input'

 

 

select * from T2

 

select * from mysql.servers

 

 

 

通过create server方法创建基于远程服务器的链接,但是这种链接也是用于federated存储引擎,不能通过该链接来查询远程服务器的表。

 

语法:

 

CREATE SERVER server_name

    FOREIGN DATA WRAPPER wrapper_name

    OPTIONS (option [, option] ...)

 

option:

  { HOST character-literal

  | DATABASE character-literal

  | USER character-literal

  | PASSWORD character-literal

  | SOCKET character-literal

  | OWNER character-literal

  | PORT numeric-literal }

注意:wrapper_name只能是mysql,使用其它名称无法支持

 

1.创建server

CREATE SERVER server_10

    FOREIGN DATA WRAPPER mysql

    OPTIONS (HOST '192.168.137.10',USER 'root',PASSWORD 'root' ,PORT 3306,DATABASE 'study');

注意:这些基本参数应该存在,至少需要保证通过这些参数能连接到远程服务器,DATABASE不能少