共計 1320 個字符,預計需要花費 4 分鐘才能閱讀完成。
本篇內容介紹了“怎么給從庫熱數據 innodb buffer pool”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
最近在生產上做了一個 mysql 主從切換的操作,當從庫提升為主后,發現從庫一開始壓力異常大,分析原因應該是從庫的 innodb_buffer_pool 的熱數據沒有立即加載進來,導致發生大量磁盤讀了。我們的 innodb_buffer_pool 設置大小為 42G,所以大約持續了 100 分鐘,才使得業務恢復正常。
后來想想應該可以把主庫 innodb buffer pool 里面的熱數據 dump 成磁盤文件,然后把這個磁盤文件拷貝到從庫,讓從庫從 dump 出的這個磁盤文件把熱數據加載到從庫的 innodb buffer pool 里面。于是我查看 MySQL 官方文檔,并找到了這樣的解決辦法。
具體步驟如下:
1)在主庫上,執行如下命令,把 innodb_buffer_pool_dump_pct 設置成 40%,表示要把 innodb buffer pool 40%(根據情況也可以設置為 100%)的熱數據 dump 到磁盤文件 /data/ib_buffer_pool 里面:
mysql SET GLOBAL innodb_buffer_pool_dump_pct=40;
2)在主庫上,執行如下命令把 innodb buffer pool 里面 40% 的熱數據 dump 到磁盤文件 /data/ib_buffer_pool 里面:
mysql SET GLOBAL innodb_buffer_pool_dump_now=ON;
3)在主庫上,執行如下命令顯示 dump 的進度,直至看到 completed 完成字樣為止:
mysql SHOW STATUS LIKE Innodb_buffer_pool_dump_status
4)把主庫 /data/ib_buffer_pool 磁盤文件拷貝到從庫的 /data 目錄下:
5)在從庫上,執行如下命令,把 /data/ib_buffer_pool 里面的熱數據加載到 innodb buffer pool
mysql SET GLOBAL innodb_buffer_pool_load_now=ON;
6)
在從庫上,執行如下命令顯示 load 的進度
mysql SHOW STATUS LIKE Innodb_buffer_pool_load_status
7)在從庫上,執行如下命令,看從庫的 LRU LIST 里面有多少個頁了:
mysql select count(*) from information_schema.INNODB_BUFFER_PAGE_LRU ;
8)
當看到從庫的 load 進度顯示完成字樣時,就可以進行主從切換的動作了,先把主庫關閉,并等待從庫應用完 relay log 后,把 vip 綁定到從庫上,從而完成了手工主從切換數據庫。切換后,從庫的運行性能和主庫一樣,對業務影響非常小。
“怎么給從庫熱數據 innodb buffer pool”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!