【Mysql之跨节点查询数据】
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不能少