mysql blackhole_MYSQL中的BlackHole引擎
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引擎相关推荐
- MYSQL中的BlackHole引擎
MYSQL中的BlackHole引擎 http://blog.csdn.net/ylspirit/article/details/7234021 http://blog.chinaunix.net/u ...
- mysql数据库中的存储引擎
mysql数据库中的存储引擎 文章目录 mysql数据库中的存储引擎 mysql中包含的存储引擎 1.InnoDB存储引擎 1.1简介 1.2InnoDB体系架构 1.2.1后台线程 1.2.2内存 ...
- MySQL索引、事务与引擎基础详解,理论加实例
目录 一.索引 1.1普通索引 1.2唯一性索引 1.3主键索引 1.4组合索引 1.5全文索引 1.6索引的查看 1.7索引的删除 二.事务 2.1事务的ACID特点 2.2事务控制语句 2.3事务 ...
- MySQL数据库中的索引(含SQL语句)
文章目录 为什么要用索引 索引是什么 索引的原理 优点 缺点 创建索引的原则 什么情况下需要索引 什么情况下不需要索引 索引的分类 主键索引 单值索引 唯一索引 组合索引(复合索引) 全文索引(仅在M ...
- 听说Mysql你很豪横?-------------深入解析mysql数据库中的事务!
文章目录 一.数据库的三大范式 二.事务(重要) 1.事务的重要性 2.什么是事务 3.事务有什么特点(ACID四个特点) 4.怎么使用事务呢? (1)如何存档 (2)如何回档 (3)如何删档 (4) ...
- mysql blackhole_MySQL的BlackHole引擎在主从架构中的作用
MySQL在5.x系列提供了Blackhole引擎–"黑洞". 其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉, 不做实际存储:Select语句的内容永远是空. 和Lin ...
- mysql blackhole_MySQL BlackHole引擎
概念 像MyISAM.InnoDB,BlackHole是另一种MySQL引擎,从字面意思来看, 其表现就像一个黑洞,只进不出,进来就消失.换句话说,任何往其中写的数据都将丢失,有点像Linux的/de ...
- mysql中存储引擎是啥_mysql中的存储引擎
mysql存储引擎概述 什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力. ...
- mysql blackhole引擎_MySQL BlackHole引擎
概念 像MyISAM.InnoDB,BlackHole是另一种MySQL引擎,从字面意思来看, 其表现就像一个黑洞,只进不出,进来就消失.换句话说, 任何往其中写的数据都将丢失,有点像Linux的/d ...
最新文章
- 深入Mysql,SqlServer,Oracle主键自动增长的设置详解
- 纯ActionScript3.0打造的工作流程编辑器(WorkFlowEdit V1.0Bata1.0)
- mysql数据库的行级锁有几种_MySQL中的行级锁、表级锁、页级锁
- 作家百态之二:山南海北
- shell脚本中怎样同时执行多个.sql文件,并把结果写入文件中(转)
- python静态方法,类方法,属性方法,实例方法
- 天线巴伦制作和原理_10米段的春天 | 用自制环型天线+改装SDR接收器27MHz采访实录...
- [2014-12-30]如何动态构造Lambda表达式(动态构造Lambda查询条件表达式)
- matlab2013基础教程,Matlab2013a教程
- 《物联网开发实战》16 实战准备:如何搭建硬件开发环境?(学习笔记)
- win7在网上邻居上看不到别的电脑如何解决
- reduceByKey中的加号是什么意思
- Hbuilder如何替换选中代码快捷键
- array方法常用记载
- 简明扼要理解YOLO v3
- 计算机怎么进入用户模式,Win7系统怎么进入电脑安全模式?
- Python中的range函数和arange函数的区别与联系
- 《途客圈创业记:不疯魔,不成活》一一1.3 iWeekend创业周末
- groovy脚本执行与优化
- TeamCity 的安装和使用