日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MYSQL中的BlackHole引擎

發布時間:2023/12/19 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 還可以用在以下場景

  • 驗證dump file語法的正確性
  • 以使用blackhole引擎來檢測binlog功能所需要的額外負載
  • 由于blackhole性能損耗極小,可以用來檢測除了存儲引擎這個功能點之外的其他MySQL功能點的性能。

  • Mysql復制架構

    ?

    ?

    這是mysql主從復制最基本的原理圖,左邊是主master,右邊是從slave,從圖中可以清晰看到mysql的復制進程,master產生二進制日志binlog,輸出到binlog文件,然后slave主機請求日志文件,master主機發送二進制到slave主機,二進制到slave后,寫入中繼日志,realylog,然后slave主機調用sql進程讀取中繼日志內容,寫入到數據庫,從而維持服務器的數據同步。

    ?

    和上面不同的是,這個架構是一個三級架構,三臺mysql服務器組成一個鏈式復制架構

    ,從左至右的master–slave–slave,前面兩個,即master–slave和第一個圖一樣,沒什么可說的,唯一的小變化是中間的slave主機也開啟了二進制日志,他把從master上更新到的信息寫入自身的logbin中,這樣的目的可以從圖中看到,為后面的slave主機提供二進制日志,此時這臺slave主機其實充當了master主機的作用。

    ?

    這個圖中說明了mysql二進制日志的過濾,除非你想同步所有的數據庫(包括mysql數據庫,這會造成不必要的麻煩),二進制的日志過濾主要取決于master主機的設置binlog_do_db和binlog_ignore_db,他們決定了什么數據會記錄到二進制日志中,并傳送到slave主機,而slave主機也可以通過配置一些選項決定怎么利用這些數據,如replicate_do_db,replicate_do_table等

    ?

    這個是一主多從的復制架構,實際應用也很多,可以用master來充當更新服務器,其他的幾臺slave充當只讀服務器,在一定程度上分擔了數據庫流 量,一定確保只在master上更新數據。

    這個一個主主復制的架構,兩臺master互為主從,更新和讀取操作可以同時在兩臺上進行

    這是一個反例,這種復制是不被允許的,一臺slave不可能同時接受兩臺master的數據,不過我們可以考慮其他的辦法來實現,比如后面的blackhole數據存儲引擎就可以實現。

    這個則是在主主復制架構上的一個擴展,每臺master下面還有一層slave結構

    這個其實也是主主復制結構的擴展(我的個人理解)只是master的結構組成了一個環狀結構

    這個也就容易理解,在環狀結構的基礎上又延伸出slave層。

    這個圖不太好理解,因為中間涉及到一個blackhole(黑洞)存儲引擎,blackhole其實就相當于 linux系統中的/dev/null

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

    最后這種情況大致的意思,有三臺mysql server,1,2和3,3做為復制從服務器,想同時復制1上的DB1和2上的DB2,這樣可以在2上引進一個blackhole的DB1來解決問題.

    ?

    來源:http://blog.csdn.net/zhaohang1983/archive/2009/08/11/4432634.aspx

    ?

    總結

    以上是生活随笔為你收集整理的MYSQL中的BlackHole引擎的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。