乙個引數引起的mysql從庫宕機血案

2021-09-05 04:33:40 字數 1568 閱讀 9631

max_binlog_cache_size 表示的是binlog 能夠使用的最大cache 記憶體大小

當我們執行多語句事務的時候 所有session的使用的記憶體超過max_binlog_cache_size的值時

就會報錯:「multi-statement transaction required more than 'max_binlog_cache_size' bytes ofstorage」

為什麼它能引起宕機

warning:警

告1

max_binlog_cache_size在主從設定不一致的情況下,主庫引數值大於從庫引數值,在主庫進行大事務操作時,主庫順利進行,從庫因max_binlog_cache_size值低於該事物所需,從庫會丟擲「multi-statement transaction required more than 'max_binlog_cache_size' bytes ofstorage」錯誤號為1197。

warning:警

告2

max_binlog_cache_size在主從引數設定一樣的情況下,主庫執行大事務操作,如主庫提示需提高該引數以順利執行sql,但dba只調整了主庫的max_binlog_cache_size而忘記調整從庫的max_binlog_cache_size,則同樣從庫會爆出1197錯誤,導致主從不同步。

part3:

該設定值為多少

具體值設定為多少,不能紙上談兵,還需要看公司的具體業務以及硬體記憶體大小,這裡除了不設定該值使用預設值(預設值很大)以外,個人推薦值為4g,基本已經足夠應付大部分場合,但無論是否指定該值,在對大表進行操作時,都需注意上述的警告內容,避免該值設定不合理引起從庫無法執行報1197的問題。具體命令如下:

——總結

——

該值為動態引數,可以隨時利用上述命令進行調整,所以別忘記將該引數加入到my.cnf中以防止重啟資料庫後失效。

由於筆者的水平有限,編寫時間也很倉促,文中難免會出現一些錯誤或者不準確的地方,不妥之處懇請讀者批評指正。

乙個引數引起的mysql從庫宕機血案

part1 max binlog cache size max binlog cache size 表示的是binlog 能夠使用的最大cache 記憶體大小 當我們執行多語句事務的時候 所有session的使用的記憶體超過max binlog cache size的值時 就會報錯 multi st...

乙個引數引起的血案

問題產生實際情況 資料庫被強制乾掉,空間漲到100 分析 經觀察發現是由於pg log目錄增長過快導致磁碟空間被爆。pg log是如何產生的?記錄資料庫執行日誌,內容可讀,預設關閉,需要設定引數啟動。1.error資訊。2.定位慢查詢sql。3.資料庫的啟動關閉資訊。4.pg系統相關警告資訊等。根據...

memcpy引起的乙個bug

void memcpy void dest,const void src,size t n 由src指向位址為起始位址的連續n個位元組的資料複製到以dest指向位址為起始位址的空間內。memcpy dest,0,5 真正應該使用的是 memset dest,0,5 關於memset memset 函...