最后呢要给大家介绍的存储引擎呢,是Federated这种存储引擎,常常有人会问MYSQL是否像SQL Server服务器或者ORACLE网关的功能,从MYSQL服务器本身来说呢,他并没有提供连接服务器这样的功能,像Federation这种存储引擎呢,是存储引擎给我们这样的一个功能,Federated这种存储引擎,主要是提供不使用复制的情况下,在本地访问远程服务器表的功能,由于Federated只是在本地建立一个到远程服务器的一个连接,可以说呢我们要访问表的所有数据呢,还是放在远程服务器上面,在本地并不存储任何数据,每次访问Federated上面表的时候呢,查询都会发送到远程服务器上来执行,并从远程的服务器上获取相关的数据,所以Federated表的第二个特点是,本地并不存储数据,数据全部放到远程服务器上面,那么Federated这个表的第三个特点呢,虽然他不会在本地存储所访问的数据,但是还是需要保存远程MYSQL数据库表的结构信息的,也就是说,在本地的Federated存储引擎表呢,同样需要存在一个FRM文件的,这里面有远程表结构信息,以及如何连接远程表的结构信息

那么Federated这种存储引擎呢,可以实现连接SQL Server连接服务器的功能,但是由于其本身的性能并不太好,而且通常可以通过复制等方式来实现相同的目的,所以在当前的MYSQL版本中呢,Federated这种引擎默认是禁止的,想要使用这种引擎呢,我需要在我们使用时指定,Federated这个参数,我们可以通过命令确认一下,当前的MYSQL服务器中呢,是否支持federated这种存储引擎,而在create table这种语句中呢,使用下面的连接字符串呢,就可以指定要查询远程的MYSQL服务器的相关信息,相关的数据库表的一些信息,我们来看一下连接代表的参数是什么意思,首先username和password,是本地连接远程MYSQL数据库服务器的用户和密码,也就是要使用federated引擎,我们需要在远程的MYSQL服务器上呢,建立的一种相关的用户权限,这个我们在下面演示中我们就会看到,而host_name和端口号呢,远程MYSQL的ip和端口号,db_name就是我们所要在本地要映射的远程MYSQL数据库的名字,table_name很简单了,我们要在本地映射远程MYSQL服务器表的名字,这样说起来大家可能不太理解,演示一下federated引擎的使用

所以我们要演示一下federated这种引擎的使用,首先我们说明的一点是,现在是在一台MYSQL服务器上来模拟,本地和远程的服务器,来给大家演示一下,federated引擎的使用,为了模拟呢,首先我们来看看当前这个实例是否是支持federated引擎的show engines;

这里大家可以看到,现在是不支持NO的状态,我们必须要在我们的MYSQL启动文件中呢,进行一下修改vi my.cnf

首先加入federated引擎的支持,让他等于1,开启federated引擎的支持

这个时候我们要重启一下我们的mysql服务器了mysqladmin shutdown

我们把它放在后台中运行bin/mysqlid_safe --defaults-file=./my.cnf --user=mysql &

启动了MYSQL服务器,大家看到federated引擎已经被支持了show engines;

现在我就为大家来演示一下,这种存储引擎如何来使用,为了在同一个实例上来给大家来演示呢,我们需要建立两个库,首先一个库称之为local库,另一个库被称之为remote库,首先我们在远程库中建立一个表,称之为remote,随便加一些列,varchar它是10,同时id列作为我们的主键,我们可以使用innodb存储引擎

我们来看一看远程表的表结构是什么样的create table remote_fed(id int auto_increment not null,c1 varchar(10) not null default '',c2 char(10)not null default '',primary key(id))engine=innodb;show create table remote_fed\G

大家可以看到,我们在远程数据库中,remote_fed这种远程表,他实际上是使用了innodb这种存储引擎,同时呢我们在这种表中呢,还需要插入一些数据,演示本地如何获取远程数据库的信息,比如c1列,c2列,我们随便插入一些数据就好,insert into remote_fed(c1,c2) values('aaa','bbb'),('ccc','ddd'),('ddd','fff');大家可以来看一下select * from remote_fed;

如果想要使用federated引擎,必须在 远程数据库中建立一个权限,我们要给他select,update,insert,delete的权限,我们就把这个用户的名字称之为fred_link,它是我们用来演示,在这台机器上进行访问就可以了,密码设置为123456就好,现在已经完成了远程数据库访问的工作grant select,update,insert,delete on remote.remote_fed to 'fred_link@127.0.0.1' identified by '123456'

我们现在来到fed_link服务器,模拟本地如何读取远程服务器上的演示的服务器上,同样刚才我们说过了,我们要在本地服务器上保存远程服务器上表的结构,我们可以把刚才建的表拷贝下来use local

唯一不同的大家要注意了,存储引擎要指定为federated存储引擎了,刚才知道,在远程数据库当中是innodb的,还要我们如何连接到远程服务器的连接信息,就是我们刚才说的连接字符串,需要的比如说,用户名我们刚才创建好了,fed_link,密码是123456,数据库IP就是我们刚才的实例了,只不过我们是跨了一个库而已,数据库是remote,表呢,remote_fed,现在我们就创建了federate表create table remote_fed(id int(11) not null auto_increment,c1 varchar(10) not null default '',c2 char(10) not null default '',primary key(id)
)engine=federated connection='mysql://fred_link:123456@127.0.0.1:3306/remote/remote_fed';我们重新命名一下这个表名rename table remote_fed to local_fed;

大家可以看到,就是在local服务器下建立的local_fed这个表show create table local_fed\G

他使用存储引擎是federated存储引擎,同时连接到远程字符串,我们在本地在对这个表进行查询,看能否查询到远程的数据,大家可以看到,和我们刚才远程插入的数据是完全一样的select * from local.local_fed;

删除数据是否可以反映到远程的数据库上,我们把id等于2的数据删除,我们来查询一下远程数据库的表delete from local.local_fed where id = 2;use remote;select * from remote_fed;

大家可以看到,id为2的那一列也被删除了,这就验证了刚才所说的federated引擎的一个功能,可以在本地数据库中操作远程数据库中的库和表,同时呢我们来看一看,在我们的本地数据库下,是否存储了federated表的数据,刚才我们在讲解federated表的特性的时候呢,讲解过在本地库中,它是不应该存储数据的,那么我们就来看一看,大家可以看到,本地库中他只存储了一个frm文件,存储了一个远程数据库表中的一个结构,以及如何连接服务器表的一个文件

这里我们就介绍了完了federated表的特性和使用方法,同样呢,我们来看一看他的适用场景,前面提到了连接远程服务器表的功能,可以访问远程服务器上的表,这看起来很方便,但是由于其实现方式的原因呢,对于关联查询的查询处理起来会比较的慢,有时还会影响远程服务器的性能,所以这种表不适合在生产环境中,但是如果只是为了满足偶尔的查询和分析使用的话呢,或是由DBA手动查询的话,以检查业务逻辑是否符合,这种情况下还是可以使用的,所以我们说federated存储引擎呢

MySQL常用存储引擎之Federated相关推荐

  1. MySQL常用存储引擎详解

    MySQL常用存储引擎详解 一.什么是存储引擎 二.掌握存储引擎的重要性 三.MySQL常用的存储引擎有哪些 四.存储引擎的特性 1.InnoDB 2.MyISAM 3.MEMORY 4.ARCHIV ...

  2. MySQL常用存储引擎之Innodb

    在MYSQL5.5版本之后,具体是在5.58版本之后,InnoDB代替MYISAM称为MYSQL的默认存储引擎,说实话呢,是一个非常重要的事情,之前在使用MYSQL时,说别人使用InnoDB,而不用m ...

  3. MySQL - MySQL 常用存储引擎简介

    # 前言 存储引擎在MySQL底层以组件的形式提供,不同的存储引擎提供的存储机制.索引的存放方式和锁粒度等均不相同. 存储引擎基于数据表, 而不是基于数据库, 请根据业务需求为数据表选择最优的存储引擎 ...

  4. MySQL常用存储引擎之Memory

    看一下MYSQL存储引擎的Memory存储引擎,Memory存储引擎也称之为HEAP存储引擎,从这个存储引擎的名字中呢,可以知道,所有的数据都保存在内存中的,这就意味着呢,这种存储引擎表的数据呢,一旦 ...

  5. MySQL常用存储引擎之Archive

    现在我们来看看另外一种存储引擎,Archive存储引擎,Archive会缓存所有的写,并且利用对插入的行进行压缩,所以Archive存储引擎比MYISAM的表更加节约磁盘的IO,对于同样数量级的数据, ...

  6. MySQL常用存储引擎之CSV

    首先我们来看CSV这种存储引擎,CSV存储引擎呢,可以讲CSV文件,作为MYSQL的表来处理,这种存储引擎的存储格式呢,就是普通的CSV文件,CSV存储引擎的数据存储方式非常的有特点,如果我们把数据存 ...

  7. MySQL常用存储引擎之MyISAM

    我们先来看看MYISAM这种存储引擎,MYISAM存储引擎呢,是MYSQL5.5以及之前的版本,在MYSQL数据库默认的存储引擎,由于这个原因呢,现在还有大量的服务器使用MYISAM的表,另外MyIS ...

  8. MySQL常用存储引擎

    MyISAM: MySQL默认数据库引擎,不支持事务.外键,速度快,用于无事务要求或者select.insert为主的场景. 会创建3个文件.frm(存储表定义),.MYD(MYData,存储数据), ...

  9. 深入浅出分析MySQL常用存储引擎

    MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件的扩展名是.MY ...

最新文章

  1. 【Codeforces】1093C Mishka and the Last Exam
  2. pandas使用applymap函数替换dataframe的内容或者数值:applymap函数使用字典替换多个列的内容(数值)
  3. Excel操作:导出到Excel并下载到web客户端
  4. 直播预告 | AAAI 2022论文解读:基于能量的主动域自适应学习方法
  5. 60万元奖金 “人脸攻防战”,怎么打?丨独家公开课实录(附baseline)
  6. 对图片进行压缩,水印,伸缩变换,透明处理,格式转换操作
  7. orabbix监控oracle11g,zabbix利用orabbix监控oracle(详细配置图解)
  8. 利用.Net中的反射动态调用方法
  9. 页面的数据缓存,包括文字和图片
  10. js 俩组数据根据id合并
  11. Java后端开发实习记录
  12. 计算机做电池模拟,探讨锂电领域常用模拟计算方法
  13. 切换计算机管理员身份,管理员身份运行,教您如何设置以管理员身份运行程序...
  14. 微信公众号怎么放html文件,微信公众号html缓存处理
  15. 个人空间岁末大回报活动12月16日获奖名单
  16. 全自动与半自动手表的区别_全自动和半自动机械表的区别?
  17. jquery的点击事件驱动获取值
  18. MATLAB 2019 快速入门教程(官方手册翻译)(1/4)
  19. 【科普】单元测试、集成测试、系统测试、验收测试、回归测试、Alpha测试、 Beta测试
  20. python切片是什么意思_python中的切片是什么?(实例解析)

热门文章

  1. PHP 5.3-5.5 新特性
  2. C# 模拟一个处理消息队列的线程类 Message Queue
  3. Liunx 常用命令 (几乎包含所有了)
  4. 【模板】AC自动机(加强版)
  5. 芝麻HTTP:redis-py的安装
  6. CRM数据如何让企业未卜先知
  7. centos6.9下安装composer
  8. centos6/7安装gitlab
  9. git配置global信息
  10. Linux 3.10 新特性