MySQL BlackHole 存储引擎使用
生活随笔
收集整理的這篇文章主要介紹了
MySQL BlackHole 存储引擎使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?BlackHole “黑洞”,高大上的樣子,但它 No transaction,no xa,no savepoint,這些都沒有阻擋他的應用;show engines 中會顯示 blackhole? 的comment 為:/dev/null storage engine (anything you write to it disappears)
?? 它有自己特定的應用場景:
?? 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 就能實現主從 使用不一致的存儲引擎;
?? 2、充當日志服務器
?? 對于blackhole的slave啟用log_slave_updates 這個參數,通過解析相關語句來做審計或者觀測服務器負載的情況;需要考慮的問題,如果binlog format 為 row 模式,解析 binlog 查看SQL語句將是一個小問題,mysqlbinlog -vv 這個不單純顯示的SQL ,還有部分“前后鏡像”,這里有一個腳本來解析SQL:http://hidba.org/wp-content/uploads/2012/10/parse_binlog.txt ,還是希望有一個同意管理工具來處理,有時間來寫一個。。
?? 3、充當增量備份服務器
?? 免去拷貝binlog的問題,如果機器數據量多,也需要多個 blackhole的slave實例,這是一個成本問題;其次是 master? binlog? pos 位置和 blackhole 重新產生的pos 是不一致的,在恢復數據的時候需要手動來恢復,不知道有沒有工具之類的來做對比; 如果 MySQL 版本達到 5.6+ 那啟用GTID 這個選項可以很容易的實現 增量的恢復;
?? 注意事項:
?? master千萬不要有blackhole的存儲引擎來復制到其他slave;
?? 造成的影響如下:
?? 1、如果binlog format 格式為 row或者 mixed 模式,那 delete 和update 是不會記錄在binlog里面,并產生warning
?? 2、對于具有auto_incrment屬性的column,由于blackhole 是 no op模式,沒有任何記錄,所以每次插入的記錄,主鍵ID列都是相同的,造成復制失敗;
?? 3、對于trigger 由于 for each row關鍵字 ,trigger不會被執行,因為沒有一條row
?? 它有自己特定的應用場景:
?? 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 就能實現主從 使用不一致的存儲引擎;
?? 2、充當日志服務器
?? 對于blackhole的slave啟用log_slave_updates 這個參數,通過解析相關語句來做審計或者觀測服務器負載的情況;需要考慮的問題,如果binlog format 為 row 模式,解析 binlog 查看SQL語句將是一個小問題,mysqlbinlog -vv 這個不單純顯示的SQL ,還有部分“前后鏡像”,這里有一個腳本來解析SQL:http://hidba.org/wp-content/uploads/2012/10/parse_binlog.txt ,還是希望有一個同意管理工具來處理,有時間來寫一個。。
?? 3、充當增量備份服務器
?? 免去拷貝binlog的問題,如果機器數據量多,也需要多個 blackhole的slave實例,這是一個成本問題;其次是 master? binlog? pos 位置和 blackhole 重新產生的pos 是不一致的,在恢復數據的時候需要手動來恢復,不知道有沒有工具之類的來做對比; 如果 MySQL 版本達到 5.6+ 那啟用GTID 這個選項可以很容易的實現 增量的恢復;
?? 注意事項:
?? master千萬不要有blackhole的存儲引擎來復制到其他slave;
?? 造成的影響如下:
?? 1、如果binlog format 格式為 row或者 mixed 模式,那 delete 和update 是不會記錄在binlog里面,并產生warning
?? 2、對于具有auto_incrment屬性的column,由于blackhole 是 no op模式,沒有任何記錄,所以每次插入的記錄,主鍵ID列都是相同的,造成復制失敗;
?? 3、對于trigger 由于 for each row關鍵字 ,trigger不會被執行,因為沒有一條row
總結
以上是生活随笔為你收集整理的MySQL BlackHole 存储引擎使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真正的云主机到底是什么样的?
- 下一篇: 【MySql】 BlackHole :黑