給從庫預熱innodb buffer pool
最近在生產上做了一個 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 繫結到從庫上,從而完成了手工主從切換資料庫。切換後,從庫的執行效能和主庫一樣,對業務影響非常小。
參考文件:
https://dev.mysql.com/doc/refman/8.0/en/innodb-preload-buffer-pool.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-2199483/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Mysql】mysql快速預熱innodb_buffer_poolMySql
- MySQL 引擎特性:InnoDB Buffer PoolMySql
- MySQL innodb_buffer_pool_size 變數MySql變數
- mysql 5.5 -- innodb buffer pool最佳化MySql
- 計算innodb_buffer_pool使用率
- ubuntu 命令列更改innodb_buffer_pool_sizeUbuntu命令列
- MySQL監控InnoDB Buffer Pool命中率MySql
- MySQL innodb buffer pool 命中率以及快取了哪些 InnoDB TableMySql快取
- mySQL5.6新特性快速預熱Buffer_Pool緩衝池MySql
- mysql引數之innodb_buffer_pool_size大小設定MySql
- MySQL服務端innodb_buffer_pool_size配置引數MySql服務端
- Innodb特性之Read-Ahead(Buffer Pool Prefetching)
- MySQL 5.7新特性之動態修改innodb_buffer_pool大小MySql
- 【Mysql】讀書筆記之--innodb_buffer_pool記憶體的管理MySql筆記記憶體
- MySQL5.7 線上調整Innodb_Buffer_Pool_size不用重啟mysql程式薦MySql
- MySQL 8.0 Reference Manual(讀書筆記72節--InnoDB Buffer Pool Configuration (3))MySql筆記
- MySQL 8.0 Reference Manual(讀書筆記71節--InnoDB Buffer Pool Configuration (2))MySql筆記
- MySQL 8.0 Reference Manual(讀書筆記70節--InnoDB Buffer Pool Configuration (1))MySql筆記
- Innodb特性之change buffer
- MySQL入門--記憶體buffer poolMySql記憶體
- MySQL中讀頁緩衝區buffer poolMySql
- percona save/restore buffer pool特性記錄REST
- 關於BUFFER POOL的一些總結
- mysql innodb_log_file_size 和innodb_log_buffer_size引數MySql
- DB2上的hidded buffer pool的作用DB2
- Mysql核心:INNODB儲存引擎--《十一》Insert BufferMySql儲存引擎
- innodb plugin-Making Buffer Cache Scan ResistantPlugin
- MySQL怎麼緩解讀的壓力的?---buffer poolMySql
- vertex buffer 資料結構 如何讀vb的memory pool資料結構
- Buffer Cache(緩衝區快取)篇:keep pool(保留池)快取
- 深入淺出buffer cache和shared pool記載01
- 深入淺出cache buffer和shared pool記載02
- 深入淺出buffer cache和shared pool記載03
- InnoDB 作為預設儲存引擎(從mysql-5.5.5開始)薦儲存引擎MySql
- MYSQL innodb buffer 狀態資料的儲存和載入MySql
- SQL Server 2014新特性探祕(2)-SSD Buffer Pool ExtensionSQLServer
- 《深入解析Oracle》第六章,Buffer Cache與Shared Pool原理Oracle
- 怎麼解決因全表掃描帶來的 Buffer Pool 汙染