mysql blackhole引擎_MySQL BlackHole引擎
概念
像MyISAM、InnoDB,BlackHole是另一種MySQL引擎,從字面意思來看,
其表現就像一個黑洞,只進不出,進來就消失。換句話說,
任何往其中寫的數據都將丟失,有點像Linux的/dev/null
比如一個表test的引擎是BlackHole,任何對這個表的insert都將丟失,
對它的select永遠返回空集,對應的數據目錄下只有一個test.frm文件,且沒有其他文件與之關聯。
使用場景
一個并不保存任何數據的引擎,到底有什么意義?
關鍵在于,雖然其不保存數據,但對數據庫的操作仍舊記錄在binlog日志中。
這就帶來一個好處,可以將其作為主從復制的中介,將原來從主庫中同步的操作變為
從作為中介的BlackHole引擎數據庫中同步。
眾所周知,當從庫比較多的時候,所有從庫都從主庫load數據將加重主庫的負擔。但如果
是從BlackHole的偽主庫中同步就可以減輕主庫的負擔。原有主從架構大概就像下面這樣:
![圖片描述][1]
現在,BlackHole偽主庫作為中介,變成這樣:
![圖片描述][2]
特別是,可以在偽主庫中配置replicate-do和replicate-ignore規則,過濾不需要同步的表。
配置
在偽庫中,需要如下配置:配置默認類型為BlackHole,可以用default_table_type = BLACKHOLE或是default-storage-engine = BLACKHOLE打開binlog:log-bin = ms-mysql-bin特別要配置:log-slave-update = 1,只有這樣,主庫中的操作才會同步到BlackHole的binlog中,否則,只有直接針對BlackHole的操作才會記錄到binlog。忽略InnoDB:skip-innodb,當建表語句帶有engine=innodb時,將使用默認的BlackHole引擎。需要提醒的是,當采用這種架構時,數據同步多了中間一層,需要進一步考慮延遲問題。
總結
以上是生活随笔為你收集整理的mysql blackhole引擎_MySQL BlackHole引擎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ lower_bound和uppe
- 下一篇: 我的世界服务器物品id错误,我的世界错误