MYSQL中的BlackHole引擎

MySQL在5.x系列提供了Blackhole引擎–“黑洞”.  其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉, 不做实际存储;Select语句的内容永远是空。 和Linux中的 /dev/null 文件完成的作用完全一致。

那么, 一个不能存储数据的引擎有什么用呢?

Blackhole虽然不存储数据,但是MySQL还是会正常的记录下Binlog,而且这些Binlog还会被正常的同步到Slave上,可以在Slave上对数据进行后续的处理。 这样对于在Master上只需要Binlog而不需要数据的场合下,balckhole就有用了。

BlackHole 还可以用在以下场景

验证dump file语法的正确性

以使用blackhole引擎来检测binlog功能所需要的额外负载

由于blackhole性能损耗极小,可以用来检测除了存储引擎这个功能点之外的其他MySQL功能点的性能。

Mysql复制架构

这是mysql主从复制最基本的原理图,左边是主master,右边是从slave,从图中可以清晰看到mysql的复制进程,master产生二进制日志binlog,输出到binlog文件,然后slave主机请求日志文件,master主机发送二进制到slave主机,二进制到slave后,写入中继日志,realylog,然后slave主机调用sql进程读取中继日志内容,写入到数据库,从而维持服务器的数据同步。

和上面不同的是,这个架构是一个三级架构,三台mysql服务器组成一个链式复制架构

,从左至右的master–slave–slave,前面两个,即master–slave和第一个图一样,没什么可说的,唯一的小变化是中间的slave主机也开启了二进制日志,他把从master上更新到的信息写入自身的logbin中,这样的目的可以从图中看到,为后面的slave主机提供二进制日志,此时这台slave主机其实充当了master主机的作用。

这个图中说明了mysql二进制日志的过滤,除非你想同步所有的数据库(包括mysql数据库,这会造成不必要的麻烦),二进制的日志过滤主要取决于master主机的设置binlog_do_db和binlog_ignore_db,他们决定了什么数据会记录到二进制日志中,并传送到slave主机,而slave主机也可以通过配置一些选项决定怎么利用这些数据,如replicate_do_db,replicate_do_table等

这个是一主多从的复制架构,实际应用也很多,可以用master来充当更新服务器,其他的几台slave充当只读服务器,在一定程度上分担了数据库流 量,一定确保只在master上更新数据。

这个一个主主复制的架构,两台master互为主从,更新和读取操作可以同时在两台上进行

这是一个反例,这种复制是不被允许的,一台slave不可能同时接受两台master的数据,不过我们可以考虑其他的办法来实现,比如后面的blackhole数据存储引擎就可以实现。

这个则是在主主复制架构上的一个扩展,每台master下面还有一层slave结构

这个其实也是主主复制结构的扩展(我的个人理解)只是master的结构组成了一个环状结构

这个也就容易理解,在环状结构的基础上又延伸出slave层。

这个图不太好理解,因为中间涉及到一个blackhole(黑洞)存储引擎,blackhole其实就相当于 linux系统中的/dev/null

主 要意思就是一主N从的结构,这里这个N可能会有很多,几十台,百台,那这样master主机就会为每台slave主机分配出一个binlog dump进程,这样的话会严重影响master的性能,这样可以考虑在主从之间添加一个分布式master,配置blackhole存储引擎,他起到一个 中继的作用,他接收数据但丢其他而不是存储,只是会把master的二进制日志供下层的slave来读取。

这里摘录一段别人的解释:

把blackhole引擎,用做slave,配置一些过滤规则,比如复制某些表、不复制某些表。然后也作为一个master,带多个slave。这样的好 处是省了一定的网络带宽,如果没有blackhole做中间环节,那么就需要把第一个master的所有日志都传递到各个slave上去。经过 blackhole这一个slave兼master过滤后再传递给多个slave,减少了带宽占用。而使用blackhole引擎的原因是它不占硬盘空 间,作为一个中转,只负责记日志、传日志。

BLACKHOLE 存储引擎就像 “ 黑洞 ” 一样,它接收数据但丢弃它而不是存储它。查询总是返回空集。

mysql> CREATE TABLE test(i INT, c CHAR(10)) ENGINE = BLACKHOLE;

Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO test VALUES(1,’record one’),(2,’record two’);

Query OK, 2 rows affected (0.00 sec)

Records: 2 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM test;

Empty set (0.00 sec)

虽然 BLACKHOLE 表不存储任何数据,但是如果开启二进制日志 ( Binary Log ),SQL 语句将被写入 日志,反之 SQL 语句会 被过滤掉。

BLACKHOLE 表的其他用途:

*  通 过对比开启和关闭二进制日志 ( Binary Log ) 时 BLACKHOLE 的性能,来计算二进制日志记录的开销。

*  BLACKHOLE 本质上是一个 “ no-op ” 存储引擎,它可能被用来查找与存储引擎自身不相关的性能瓶颈

下面这两张图也是跟blackhole存储相关,等慢慢研究blackhole后再细细研究

最后这种情况大致的意思,有三台mysql server,1,2和3,3做为复制从服务器,想同时复制1上的DB1和2上的DB2,这样可以在2上引进一个blackhole的DB1来解决问题.

来源:http://blog.csdn.net/zhaohang1983/archive/2009/08/11/4432634.aspx

mysql blackhole_MYSQL中的BlackHole引擎相关推荐

  1. MYSQL中的BlackHole引擎

    MYSQL中的BlackHole引擎 http://blog.csdn.net/ylspirit/article/details/7234021 http://blog.chinaunix.net/u ...

  2. mysql数据库中的存储引擎

    mysql数据库中的存储引擎 文章目录 mysql数据库中的存储引擎 mysql中包含的存储引擎 1.InnoDB存储引擎 1.1简介 1.2InnoDB体系架构 1.2.1后台线程 1.2.2内存 ...

  3. MySQL索引、事务与引擎基础详解,理论加实例

    目录 一.索引 1.1普通索引 1.2唯一性索引 1.3主键索引 1.4组合索引 1.5全文索引 1.6索引的查看 1.7索引的删除 二.事务 2.1事务的ACID特点 2.2事务控制语句 2.3事务 ...

  4. MySQL数据库中的索引(含SQL语句)

    文章目录 为什么要用索引 索引是什么 索引的原理 优点 缺点 创建索引的原则 什么情况下需要索引 什么情况下不需要索引 索引的分类 主键索引 单值索引 唯一索引 组合索引(复合索引) 全文索引(仅在M ...

  5. 听说Mysql你很豪横?-------------深入解析mysql数据库中的事务!

    文章目录 一.数据库的三大范式 二.事务(重要) 1.事务的重要性 2.什么是事务 3.事务有什么特点(ACID四个特点) 4.怎么使用事务呢? (1)如何存档 (2)如何回档 (3)如何删档 (4) ...

  6. mysql blackhole_MySQL的BlackHole引擎在主从架构中的作用

    MySQL在5.x系列提供了Blackhole引擎–"黑洞". 其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉, 不做实际存储:Select语句的内容永远是空. 和Lin ...

  7. mysql blackhole_MySQL BlackHole引擎

    概念 像MyISAM.InnoDB,BlackHole是另一种MySQL引擎,从字面意思来看, 其表现就像一个黑洞,只进不出,进来就消失.换句话说,任何往其中写的数据都将丢失,有点像Linux的/de ...

  8. mysql中存储引擎是啥_mysql中的存储引擎

    mysql存储引擎概述 什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力. ...

  9. mysql blackhole引擎_MySQL BlackHole引擎

    概念 像MyISAM.InnoDB,BlackHole是另一种MySQL引擎,从字面意思来看, 其表现就像一个黑洞,只进不出,进来就消失.换句话说, 任何往其中写的数据都将丢失,有点像Linux的/d ...

最新文章

  1. 深入Mysql,SqlServer,Oracle主键自动增长的设置详解
  2. 纯ActionScript3.0打造的工作流程编辑器(WorkFlowEdit V1.0Bata1.0)
  3. mysql数据库的行级锁有几种_MySQL中的行级锁、表级锁、页级锁
  4. 作家百态之二:山南海北
  5. shell脚本中怎样同时执行多个.sql文件,并把结果写入文件中(转)
  6. python静态方法,类方法,属性方法,实例方法
  7. 天线巴伦制作和原理_10米段的春天 | 用自制环型天线+改装SDR接收器27MHz采访实录...
  8. [2014-12-30]如何动态构造Lambda表达式(动态构造Lambda查询条件表达式)
  9. matlab2013基础教程,Matlab2013a教程
  10. 《物联网开发实战》16 实战准备:如何搭建硬件开发环境?(学习笔记)
  11. win7在网上邻居上看不到别的电脑如何解决
  12. reduceByKey中的加号是什么意思
  13. Hbuilder如何替换选中代码快捷键
  14. array方法常用记载
  15. 简明扼要理解YOLO v3
  16. 计算机怎么进入用户模式,Win7系统怎么进入电脑安全模式?
  17. Python中的range函数和arange函数的区别与联系
  18. 《途客圈创业记:不疯魔,不成活》一一1.3 iWeekend创业周末
  19. groovy脚本执行与优化
  20. TeamCity 的安装和使用

热门文章

  1. 美团Java面试题,java找不到工作要不要先去干别的
  2. docker启动rabbitmq及使用
  3. 使用vsftpd搭建ftp,用户无法上传文件
  4. 51单片机通过计时器实现倒计时
  5. 手机隐藏的6个功能,你们不能错过
  6. CSDN上传图片提示上传失败
  7. 开放创新平台,大公司的掘墓者
  8. 曼波(Mambo )CMS开发团队访谈录
  9. Nandflash的寄存器配置
  10. 2022杭电多校(四)