一、 什么是federated引擎

mysql中的federated类似于oracle中的dblink。

federated是一个专门针对远程数据库的实现,一般情况下在本地数据库中建表会在数据库目录中生成相对应的表定义文件,并同时生成相对应的数据文件。

[图]

但是通过federated引擎创建的表只是在本地有表定义文件数据文件则在远程数据库中

[图]

针对federated存储引擎表的查询会被发送到远程数据库的表上执行,本地是不存储任何数据的。

1. 本地的表结构必须与远程的完全一致。本地可以比远端数据库的字段少,但是不能多。因为多的话字段就没有地方存储了,还记得么,federated只在本地存储了表结构。

2. 远程的数据库必须是mysql。

3. 不支持事务。

4. 不支持表结构修改,远端表结构变了本地不知道(并不会主动通知本地,不理解,搞个监听器很难吗),一旦远端修改了表结构就gg了。

5. 创建时远程数据服务器必须已经存在此表。

6. 一个federated表指向另一个federated表是有可能的,但是要避免死循环。

7. 不使用查询缓存。

8. 远程服务器gg,federated表gg。

二、 如何使用

1. 开启federated引擎

mysql默认是没有打开federated存储引擎的。

如果报这种错误,就可能是没有打开federated存储引擎:

使用 show engines 命令查看当前的引擎支持状况:

在mysql的配置文件中 :

这个只是一个引用,去在圈中的文件中:

在[mysqld]节点下添加一行 federated:

重启mysql即可:

再连接到myql, show engines

2. 创建federated表

先在A服务器创建一张表:

-- A服务器
drop database if exists foo_db ;
create database foo_db default charset utf8 ;
use foo_db;
drop table if exists t_foo_table ;
create table t_foo_table(id int primary key auto_increment ,username varchar(20) not null ,passwd varchar(20) not null
)charset=utf8;    

然后在B服务器创建另一张表,结构和之前创建的一模一样,不同的只是多了指定engine和connection:

-- B服务器
drop database if exists foo_db ;
create database foo_db default charset utf8 ;
use foo_db;
drop table if exists t_foo_table ;
create table t_foo_table(id int primary key auto_increment ,username varchar(20) not null ,passwd varchar(20) not null
)charset=utf8 engine=federated connection="mysql://root:@10.26.200.134/foo_db/t_foo_table";    

connection的格式:

mysql://username:passwd@hostname/db_name/table_name

在A服务器往表中插入一条数据:

insert into t_foo_table (username, passwd) values ("foo", "bar");

在B服务器查询:

同理在B服务器插入,在A服务器也能查得到,实际上是发送到A服务器执行,数据也是存储在A服务器上的。

3. 借助于federated表跨节点join

在B数据库再创建一个表:

-- 要连接的表
drop table if exists t_bar ;
create table t_bar(id int primary key auto_increment ,barbar varchar(20) not null default ""
)charset utf8;

插入数据:

insert into t_bar (id,barbar) values (1, "barbar");
insert into t_bar (id,barbar) values (2, "barbarbar");
insert into t_bar (id,barbar) values (3, "barbarbarbar");
insert into t_foo_table (username, passwd) values ("foofoooofoo", "barbaaaaarbar");
insert into t_foo_table (username, passwd) values ("foofooooofoo", "barbaaaarbar");
insert into t_foo_table (username, passwd) values ("foofooooofoo", "barbaaaarbar");

连表查询:

select * from t_bar as t1
join t_foo_table as t2 on t1.id=t2.id ;

查询结果:

OK,查询结果是从两台服务器的两个节点中取出来的。

三、 总结

使用federated有很大的局限性,而且总感觉很不靠谱的样子,讲道理的话应该使用中间件来实现的。

.

转载于:https://www.cnblogs.com/cc11001100/p/6675409.html

mysql跨节点join——federated引擎相关推荐

  1. mysql federated5.7_MySQL下FEDERATED引擎的开启和使用

    在实际工作中,我们可能会遇到需要操作其他数据库实例的部分表,但又不想系统连接多库.此时我们就需要用到数据表映射.如同Oracle中的DBlink一般,使用过Oracle DBlink数据库链接的人都知 ...

  2. 两台不同服务器上的mysql跨库查询(FEDERATED)

    首先,你当前的mysql环境需要支持FEDERATED引擎; 然后执行 CREATE TABLE `table_name`(表结构) ENGINE = FEDERATED CONNECTION='my ...

  3. MySQL 远程跨库查询 FEDERATED引擎

    场景:最近写了个供应链控制塔的需求,简单来说就是用户可以自定义一些指标值,当某些货物返单或回货的某个环节不在这个指标值的范围内就告警,数据源来是由供应链那边提供的MySQL数据库,而用户自定义的指标值 ...

  4. mysql 跨服务器 etl_mysql数据库跨服务器查询【需要确定mysql支持FEDERATED ,可以参照文章内容自己配置】...

    现有两台MySQL数据库 一台是192.168.1.1 端口3306 上有数据库DB1 有表TABLE1 一台是192.168.1.2 端口3307 上有数据库DB2 有表TABLE2 192.168 ...

  5. mysql+跨服务器+写入_MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问

    跨数据库服务器,跨实例访问是比较常见的一种访问方式,在Oracle中可以通过DB LINK的方式来实现.对于MySQL而言,有一个FEDERATED存储引擎与之相对应.同样也是通过创建一个链接方式的形 ...

  6. MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK

    原文地址:http://it.dataguru.cn/article-3352-1.html 摘要: 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来 ...

  7. MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK.

    http://www.kankanews.com/ICkengine/archives/31891.shtml 1 引擎说明 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FE ...

  8. mysql跨库查询 索引_MySQL中跨库查询怎么搞?

    导读 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询;另一种是不同服务的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 在MySQL中跨库查询主要分为两种情况,一种 ...

  9. MySQL federated 引擎跨服务器使用实例

    由于业务需要,数据库服务器需要跨服务器查询其他数据库上的一些表,而FEDERATED可以满足这个功能.MySQL中针对不同的功能需求提供了不同的存储引擎.所谓的存储引擎也就是MySQL下特定接口的具体 ...

最新文章

  1. web标准的投资回报
  2. 愿能与诸位关心的人及时保持互联
  3. Homebrew正式支持苹果M1,程序员换新Mac又多了一条理由
  4. HighNewTech之5G网络:带你了解5G网络的前世今生—两张长图帮你捋清思路
  5. 利用Python制作王者荣耀出装小助手,引来了老板的注意!
  6. bootstrap-table toolbar图标换文字_iPhone 也能随意换字体啦~
  7. NumSharp v0.6.5 .NET矩阵计算库,与TensorFlow.NET无缝融合
  8. Docker学习笔记之Docker应用于服务化开发
  9. 一个Java程序员对2011年的回顾
  10. c语言答辩ppt案例,c语言ppt例子课题答辩ppt成品中南民族大学.ppt
  11. 写给准备看CCNA题库的朋友们 希望有些帮助
  12. 阿里云服务器设置安全组最新图文教程 新手必看!
  13. 山东标梵讲解浅谈移动端开发技术
  14. lstm优点缺点_LSTM和易失性时间序列:优点和缺点
  15. 计算机软件ae常用英语,AE英文插件该怎么翻译?
  16. Salesforce系列(五):Salesforce Apex基础SOSL查询和数据添加!
  17. BERT预训练模型的使用
  18. iOS闪退的原因和方案总结
  19. svn修改提交日志信息
  20. baidu文库爪巴虫——xls

热门文章

  1. html中视频播放完后可以跳到另一个html
  2. crawler_微信采集方案
  3. vs2005 创建解决方案不显示,解决方案管理器中看不到解决方案节点的解决办法...
  4. IDEA 插件开发入门教程
  5. 最近用.NET实现DHT爬虫,全.NET实现
  6. win10子系统linux编译ffmpeg
  7. 换了电脑如何使用hexo继续写博客
  8. 内置的常用协议实现模版
  9. android抓包工具——使用fiddler4在安卓手机抓包
  10. comparator接口与Comparable接口的区别