mysql blackhole引擎_mysql blackhole引擎

使用命令show engines 查看mysql支持的存储引擎

创建一个BLACKHOLE表的时候,服务器在数据库目录创建一个表定义文件。文件用表的名字开头,并且有一个.frm扩展名。没有其它文件关联到这个表格。

mysql>

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

Query OK, 0 rows affected (0.02 sec)

mysql> insert into test values(1,'a') ;

Query OK, 1 row affected (0.03 sec)

mysql> insert into test values(2,'b') ;

Query OK, 1 row affected (0.01 sec)

mysql> insert into test values(3,'c') ;

Query OK, 1 row affected (0.00 sec)

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from test;

Empty set (0.00 sec)

mysql> exit

Bye

[root@rac3 ~]# cd /opt/mysql/data/test/

[root@rac3 test]# ll

总计 48

-rw-rw---- 1 mysql mysql 8632 12-10 15:22 sbtest.frm

-rw-rw---- 1 mysql mysql 8632 12-19 13:38 t10.frm

-rw-rw---- 1 mysql mysql 8632 12-16 17:01 t1.frm

-rw-rw---- 1 mysql mysql 8582 12-20 17:45 test.frm

[root@rac3 test]#

从上面的例子中可以看出使用BLACKHOLE存储引擎的表不存储任何数据,但如果mysql启用了二进制日志,SQL语句被写入日志(并被复制到从服务器)。这样使用BLACKHOLE存储引擎的mysqld可以作为主从复制中的中继重复器或在其上面添加过滤器机制。例如,假设你的应用需要从服务器侧的过滤规则,但传输所有二进制日志数据到从服务器会导致较大的网络流量。在这种情况下,在主服务器主机上建立一个伪从服务器进程。

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

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

1、充当dummy master

当master后面挂载过多的slave,利用 blackhole 来充当一个 "dummy master" 来减轻master的负载(延迟是需要考虑的);这里需要提一下的是: 对于 master来说“dummy master” 还是一个slave的角色, 由于binlog 设计中是不记录 engine=xxxx 关键字的,采用默认的存储引擎(除非在create 语句中 显式声明 engine=innodb),所以对于dummy master 来说 只要设置 default_storage_engine=blackhole 就能实现主从 使用不一致的存储引擎;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值