• MYSQL中的BlackHole引擎


    MYSQL中的BlackHole引擎

    http://blog.csdn.net/ylspirit/article/details/7234021

    http://blog.chinaunix.net/uid-22646981-id-3271711.html

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

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

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

    BlackHole 还可以用在以下场景

    1. 验证dump file语法的正确性
    2. 以使用blackhole引擎来检测binlog功能所需要的额外负载
    3. 由于blackhole性能损耗极小,可以用来检测除了存储引擎这个功能点之外的其他MySQL功能点的性能。

    Mysql复制架构

     

     

    013646duj mysql基于BLACKHOLE复制基础的各种架构

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

     

    0136468IX mysql基于BLACKHOLE复制基础的各种架构

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

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

     

    013646W30 mysql基于BLACKHOLE复制基础的各种架构

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

     

    013647fsI mysql基于BLACKHOLE复制基础的各种架构

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

    0136478UC mysql基于BLACKHOLE复制基础的各种架构

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

    013647vm5 mysql基于BLACKHOLE复制基础的各种架构

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

    013647uEI mysql基于BLACKHOLE复制基础的各种架构

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

    013647Iql mysql基于BLACKHOLE复制基础的各种架构

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

    01364719I mysql基于BLACKHOLE复制基础的各种架构

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

    013647TKo mysql基于BLACKHOLE复制基础的各种架构

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

    013648wK3 mysql基于BLACKHOLE复制基础的各种架构

    主 要意思就是一主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后再细细研究

    013648KWu mysql基于BLACKHOLE复制基础的各种架构

    013648Ijj mysql基于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

  • 相关阅读:
    Firemonkey 控件设定字型属性及颜色
    ListView 使用 LiveBindings 显示超过 200 条记录
    Firemonkey ListView 获取项目右方「>」(Accessory) 事件
    XE7 Update 1 选 iOS 8.1 SDK 发布 iPhone 3GS 实机测试
    Firemonkey Bitmap 设定像素颜色 Pixel
    Firemonkey 移动平台 Form 显示使用 ShowModal 范例
    XE7 提交 App(iOS 8)提示「does not contain the correct beta entitlement」问题修复
    XE7 Android 中使用 MessageDlg 范例
    导出 XE6 预设 Android Style (*.style) 档案
    修正 Memo 設定為 ReadOnly 後, 無法有複製的功能
  • 原文地址:https://www.cnblogs.com/MYSQLZOUQI/p/3790711.html
Copyright © 2020-2023  润新知