MySQL的BlackHole引擎在主从架构中的作用详解数据库
MySQL在5.x系列提供了Blackhole引擎–“黑洞”. 其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉, 不做实际存储;Select语句的内容永远是空。 和Linux中的 /dev/null 文件完成的作用完全一致。
那么, 一个不能存储数据的引擎有什么用呢?
在大规模的Mysql服务器集群中,如果是存在一台主服务,多台从服务器,在繁忙的业务中,意味着主服务器每操作一个事件,都要往自己的二进制日志中写数据,同时还要往多台从服务器发一次,N台服务器指向一台主服务器,那么需要主服务器发送N次,会启动N个线程,每个线程各自从线程里读二进制日志,那么会有大量的IO,本来是为主服务器减轻负担的,那么这样只能造成压力越来越大,那这样master主机就会为每台slave主机分配出一个binlog dump进程,这样的话会严重影响master的性能。
解决这种问题可以采用多级复制,主服务器还是保持主位置A,再拿一台服务器作为从服务器B,主服务器A只启动一个线程指向从服务器B,那么B服务器再作为其他N台服务器的主,那么B就启动了多个线程,怎么给B服务器减轻压力呢?
在主从之间添加一个分布式master,配置blackhole存储引擎,他起到一个中继的作用,他接收数据但丢其他而不是存储,只是会把master的二进制日志供下层的slave来读取。
第一,让B服务器不再执行查询操作;
第二,让B服务器不再执行写操作;
第三,负责多线程为每个从服务器提供数据,那么就不需要在B服务器存储数据了,但是需要提供二进制日志和中继日志,但B服务器又不需要数据库;
把blackhole引擎,用做slave,配置一些过滤规则,比如复制某些表、不复制某些表。然后也作为一个master,带多个slave。这样的好 处是省了一定的网络带宽,如果没有blackhole做中间环节,那么就需要把第一个master的所有日志都传递到各个slave上去。经过 blackhole这一个slave兼master过滤后再传递给多个slave,减少了带宽占用。而使用blackhole引擎的原因是它不占硬盘空 间,作为一个中转,只负责记日志、传日志。
如何设置呢?
先查看一下当下mysql支持的引擎列表;
没找到blackhole引擎,那么接下来安装。
mysql INSTALL PLUGIN blackhole SONAME ha_blackhole.so;
要设置 default_storage_engine=blackhole 就能实现主从 使用不一致的存储引擎。
补充:如果使用blackhole引擎创建的表,在执行insert操作后,再查询,是没有数据的,因为创建的时候只有.frm表结构文件。
BLACKHOLE总结
BLACKHOLE支持所有类型的索引 BLACKHOLE 表不存储数据,如果复制基于SBR,语句可以记录并在从库执行;如果复制为RBR、MBR,UPDATE及DELETE操作将会跳过,不会记录也从库不执行。 Insert触发器可以正常使用,Update、Delete触发器因为不存储数据不能触发,FOR EACH ROW 也不能触发。 BLACKHOLE 表Auto Increment字段不会自动递增,也不保留自增字段的状态 结合复制replicate-do和replicate-ignore规则,可使用BLACKHOLE当做一个分发主服务器 可用来验证转储文件语法 测试binlog的开销量,通过对比 BLACKHOLE 与 不启动 binlog的性能 可能被用来查找与存储引擎自身不相关的性能瓶颈原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/5695.html
mysql相关文章
- MySQL中文字段名的使用与管理(mysql中文字段名)
- MySQL中回复表的设计与开发(mysql回复表)
- MySQL环形同步:实现数据无缝复制(mysql环形同步)
- MySQL数据库中的自增ID特性(mysql数据库自增id)
- MySQL:如何实现多字段排序(mysql两个字段排序)
- MYSQL热备份:不错过任何一秒钟(mysql支持热备份)
- MySQL无法删除记录:一场数据库灾难(mysql无法删除记录)
- MySQL数据库架构简介(mysql数据库的架构)
- MySQL分区:如何查看已分区的表分区情况(mysql分区查看分区)
- 备份MySQL 数据库快速打包备份(mysql打包)
- VC技术与MySQL数据库的高效整合(vc与mysql数据库)
- IP库下载MySQL:构建你的网络保护基础(ip库下载mysql)
- MySQL学习必知:如何实现数据库表格的填充(mysql 填充)
- 深入MySQL优化,25种方法助你大幅提升数据库性能(mysql优化的方法)
- MySQL 主键查询:轻松获取特定数据(mysql主键查询)
- MySQL命令掌握,拥抱数据库之旅!(mysql的命令)
- 远程备份:传送MySQL数据库安全可靠(远程备份mysql数据库)
- MySQL代表什么解密MySQL数据库管理系统的含义(mysql中代表什么意思)
- MySQL中if嵌套提高查询效率的好伙伴(mysql中if嵌套)
- 苹果企业如何管理MySQL数据库(apple管理mysql)
- 2018年MySQL数据库漏洞及防护建议(2018年mysql漏洞)
- 解密MySQL索引技巧应用,轻松应对万亿级大数据挑战(mysql万亿数据索引)
- MySQL数据库简介及其重要性(mysql ・・)
- MySQL 数据库管理利器(mysql〉)
- MySQL安装教程手把手教你安装MySQL,亲测可行(mysql、安装教程)
- MySQL数据库无响应,解决方法你知道吗(mysql下无反应)
- MySQL三主键表的规范设计(mysql三主建表)