BlackHole :黑洞引擎,写入的任何数据都会消失,用于记录binlog做复制的中继存储!

是否支持BLACKHOLE引擎,通过查看SHOW ENGINES进行查看。

BlackHole的用途:

  • 用于binlog的备份

线上MySQL的binlog一般会保留3-5天,但是对比较重要的业务,binlog可能需要保留一个月甚至半年。线上服务器可没有这么大的空间,最多保留10天就会被purge掉。此时blackhole就有了用武之地。blackhole从库+xtrabackup的定期热备+binlogflashback,可以让你的数据库恢复到任意时刻。

  • 充当binlog     API,为其他程序提供数据源

可作为其他程序提供数据源的接口,如在BLACKHOLE获取BINLOG分析把对应的数据插入到redis中。这种情况下blackhole从库充当了天然的binlog API。

  • IDC部署场景下,节省带宽

如果一个主库拖着20个从库,主库可能不堪重负,此时可以考虑给主库增加一个blackhole从库作为中继,虽然这种方案有诸多不靠谱的地方,但是如果这个主库在北京,20个从库在广州,这种方案就有意义了:在广州增加一个blackhole,让blackhole下挂20个从库,此时就可节省大量北京到广州的带宽。

。。。。。。

应用场景:

主服务器的操作写入二进制日志,伪mysqld进程作为从服务器,在伪mysqld进程上配置replicate-do和replicate-ignore规则,并且写一个新的,被过滤的二进制日志。这个已过滤日志被提供给其他真正的从服务器。因为伪进程不存储任何数据,只消耗很小的额外的mysqld进程资源。这个类型的建立可以用额外复制从服务器来重复。

当然如果配置一主多从的话,多个从服务器会在主服务器上分别开启自己相对应的线程,执行binlog dump命令而且多个此类进程并不是共享的。为了避免因多个从服务器同时请求同样的事件而导致主机资源耗尽,可以单独建立一个伪的从服务器或者叫分发服务器:

测试环境:

SERVER

IP

ROLE

Data_format

MASTER

192.168.15.2

主库

RBR

BLACKHOLE

192.168.15.13

分发服务器

RBR

SLAVE

192.168.15.104

分发服务器的从库

RBR

搭建过程:

1、在master 添加一个帐号作为BLACKHOLE同步BINLOG使用

2、在BLACKHOLET添加一个帐号作为SLAVE同步BINLOG使用

3、可以指定需要同步的库表或者忽略某些表(replicate-do和replicate-ignore规则)

4、新环境搭建主从过程:

1、实例启动后对master执行show masterstatus 获取到的BINLOG FIEL 和POS作为BLACKHOLE的连接使用

2、实例启动后对BLACKHOLE执行show masterstatus 获取到的BINLOG FIEL 和POS作为SLAVE的连接使用

3、在主库添加DDL的时候,不要再次指定ENGINE,根据实例配置走即可,若再次指定引擎,到BLACKHOLE,同步的BINLOG的中的DDL语句没法使用BLACKHOLE引擎,不符合黑洞引擎,写入的任何数据都会消失这一说法,虽然也能同步,感觉为线性级联方式同步

注意:在BLACKHOLE需要开启log_slave_updates和BINLOG服务器才能作为SLAVE的同步数据源

5、对于旧环境添加BLACKHOLE服务器:

1、如果在DDL指定ENGINE话,到BLACKHOLE服务器存储的表和主库一致,不符合黑洞引擎,写入的任何数据都会消失这一说法

2、在导入旧数据的时候,需要修改导入数据表的引擎为BLACKHOLE

3、在BLACKHOLE连接着SLAVE时候,需要把SLAVE引擎改为和主库一致

4、备份的数据不需要DDL语句,只要数据,在主库导入即可,后期写入的数据,即可通过BLACKHOLE同步快速同步到不同的SLAVE上

最终结果图:

主库上的DDL:

BLACKHOLE的DDL:

SLAVE上的DDL

实验现象:

在测试1000W数据写入的时候,BLACKHOLE同步MASTER的速度很快,

SLAVE的IO线程同步BLACKHOLE的BINLOG日志速度也快,但SLAVE的SQL_THREAD线程的速度跟不上(MySQL版本为5.6,或用5.7的多个线程可提高效率).数据获取多次展示:

master binlog event File:mysql-bin.000006

Position:777525175

blackhole master event File:mysql-bin.000007

Position:129152031

BLACKHOLE SYNE:

Master_Log_File:mysql-bin.000006

Read_Master_Log_Pos: 776113906

Relay_Log_File:relay-log.000010

Relay_Log_Pos: 458099520

Exec_Master_Log_Pos: 458099357

SLAVE SYNE:

Master_Log_File:mysql-bin.000007

Read_Master_Log_Pos: 129152031

Relay_Log_File:relay-log.000017

Relay_Log_Pos: 129007567

Exec_Master_Log_Pos: 129007404

master binlog event File:mysql-bin.000006

Position:844042095

blackhole master event File:mysql-bin.000007

Position:152147724

BLACKHOLE SYNE:

Master_Log_File:mysql-bin.000006

Read_Master_Log_Pos: 843124455

Relay_Log_File:relay-log.000010

Relay_Log_Pos: 481091238

Exec_Master_Log_Pos: 481091075

SLAVE SYNE:

Master_Log_File:mysql-bin.000007

Read_Master_Log_Pos: 152147724

Relay_Log_File:relay-log.000017

Relay_Log_Pos: 152147887

Exec_Master_Log_Pos: 152147724

master binlog event File:mysql-bin.000006

Position:936876579

blackhole master event File:mysql-bin.000007

Position:199585380

BLACKHOLE SYNE:

Master_Log_File:mysql-bin.000006

Read_Master_Log_Pos: 936441390

Relay_Log_File:relay-log.000010

Relay_Log_Pos: 528520694

Exec_Master_Log_Pos: 528520531

SLAVE SYNE:

Master_Log_File: mysql-bin.000007

Read_Master_Log_Pos: 199585380

Relay_Log_File:relay-log.000017

Relay_Log_Pos: 199585543

Exec_Master_Log_Pos: 199585380

master binlog event File:mysql-bin.000007

Position:131443338

blackhole master event File:mysql-bin.000007

Position:444149637

BLACKHOLE SYNE:

Master_Log_File:mysql-bin.000007

Read_Master_Log_Pos: 131044087

Relay_Log_File:relay-log.000010

Relay_Log_Pos: 773042676

Exec_Master_Log_Pos: 773042513

SLAVE SYNE:

Master_Log_File:mysql-bin.000007

Read_Master_Log_Pos: 444020772

Relay_Log_File: relay-log.000017

Relay_Log_Pos: 384708103

Exec_Master_Log_Pos: 384707940

master binlog event File:mysql-bin.000007

Position:286312080

blackhole master event File:mysql-bin.000007

Position:679313139

BLACKHOLE SYNE:

Master_Log_File:mysql-bin.000007

Read_Master_Log_Pos: 286167931

Relay_Log_File:relay-log.000010

Relay_Log_Pos: 1008165528

Exec_Master_Log_Pos: 1008165365

SLAVE SYNE:

Master_Log_File:mysql-bin.000007

Read_Master_Log_Pos: 679191406

Relay_Log_File:relay-log.000017

Relay_Log_Pos: 537578842

Exec_Master_Log_Pos: 537578679

master binlog event File:mysql-bin.000008

Position:249583172

blackhole master event File:mysql-bin.000008

Position:469748616

BLACKHOLE SYNE:

Master_Log_File:mysql-bin.000008

Read_Master_Log_Pos: 249368601

Relay_Log_File:relay-log.000013

Relay_Log_Pos: 798058721

Exec_Master_Log_Pos: 798058558

SLAVE SYNE:

Master_Log_File:mysql-bin.000008

Read_Master_Log_Pos: 469654916

Relay_Log_File:relay-log.000020

Relay_Log_Pos: 333076264

Exec_Master_Log_Pos: 333076101

由此看出,在1000W 写入的时候,MASTER与BLACKHOLE的IO_THREAD延迟不是很大,取决于BLACKHOLE的SQL_THREAD。需要注意的是,在主库的添加DDL不能指定引擎名字,让数据库实例自行为DDL添加引擎即可,否则在BLACKHOLE中也会和M一样的引擎名字,这样的结果是否能够一样的提高效率,有待验证。

本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1895182

BLACKHOLE的BINLOG实现相关推荐

  1. mysql blackhole引擎_MySQL BlackHole引擎

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

  2. mysql blackhole_MySQL BlackHole引擎

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

  3. 【MySql】 BlackHole :黑洞引擎

    BlackHole :黑洞引擎,写入的任何数据都会消失,用于记录binlog做复制的中继存储! 如何安装: 在安装MySQL时使用带有--with-blackhole-storage-engine选项 ...

  4. MySQL BlackHole 存储引擎使用

    BlackHole "黑洞",高大上的样子,但它 No transaction,no xa,no savepoint,这些都没有阻挡他的应用:show engines 中会显示 b ...

  5. MYSQL中的BlackHole引擎

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

  6. MySQL链式复制加速神器: MaxScale Binlog Server(附视频)

    本文根据DBAplus社群第83期线上分享整理而成 讲师介绍 贺春旸 普惠金融MySQL专家 <MySQL管理之道>第一版.第二版作者,曾任职于中国移动飞信.机锋安卓市场,拥有丰富的数据库 ...

  7. mysql blackhole_MYSQL中的BlackHole引擎

    MYSQL中的BlackHole引擎 MySQL在5.x系列提供了Blackhole引擎–"黑洞".  其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉, 不做实际存储:S ...

  8. mysql blackhole缺点_MySQL:BlackHole

    MySQL:BlackHole 顾名思义BlackHole就是黑洞,只有写入没有输出.现在就来实验一下吧 首先查看一下MySQL支持的存储引擎 mysql> show engines; +--- ...

  9. mysql blackhole_一键搭建blackhole从库

    之前我们搭建blackhole从库,都是先把线上主库或者备库的表结构dump出来,然后把主库的权限库.监控库等整个拷贝过来,再change 来自业务的驱动 前一段时间,微博的双向关注业务拆分,数据库实 ...

最新文章

  1. Git 高级用法,喜欢就拿去用!
  2. 配置linux终端主题需要密码,Mac/Ubuntu下终端色彩主题设置
  3. 在OpenCV环境下写的灰度图像二维傅里叶换,幅值计算,频谱平移和将数值归一化到0到255区间的四个函数
  4. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 Tomb Raider(map+二进制枚举)
  5. 2006---2009年杭电计算机历年研究生复试---笔试编程
  6. 发现自己的代码写的越来越玄幻了
  7. Win10系统,安装虚拟机,是微软自家的 Hyper-V ?还是轻量级的 Virtual Box ?
  8. dubbo protocol port 消费者端_Dubbo源码:搞定URL,就走完了进度条的一半
  9. 登录匿名ftp服务器网站,匿名登录ftp服务器
  10. Android 应用开发(9)---内联复杂的XML资源
  11. JavaJDBC异常记录:关于sql上能够正常执行的sql语句,在java中执行了但是返回结果不一致问题
  12. 做个简单的Java学生考勤系统06--签到功能完善
  13. NOD 32 企业版远程管理服务器病毒库更新失败_七夕小子_新浪博客
  14. Java集合的常见面试题(全)
  15. 悟空CRM客户关系管理系统测试
  16. 计算摄影: 高动态范围成像
  17. ES6 数组函数forEach()、map()、filter()、find()、every()、some()、reduce()
  18. android判断应用是否回到桌面的两种方法
  19. 一文了解“什么是ACL”、“什么是EACL”、“什么是NAACL”、“什么是AACL”国际会议
  20. [转]最速下降曲线:重力场中两点之间曲线更快

热门文章

  1. matlab 自定义算法将图像二分阈值 (binary threshold)化,im2bw or imbinarize函数用法
  2. RPA机器人的两种类型与未来发展
  3. 人工智能导论(6)——机器学习(Machine Learning)
  4. 传说中的格林达姆同人图像合集(别名为[绿bar娘]或[greendam]等等)
  5. react native新建项目运行在安卓设备上
  6. 【Python_urllib学习笔记(四)】基于urllib和re,爬取豆瓣电影新片榜
  7. Ruby 第三方库集锦
  8. ORACLE数据库查询表名及表备注,字段名及字段备注SQL
  9. [小技巧] Word 使用
  10. maya用定位器进行秒切制作(利用maya的节点编辑器)