您好,登錄后才能下訂單哦!
專題描述 | 對已經運行的MySQL數據庫InnoDB存儲引擎的配置參數innodb_log_file_size大小或文件組個數調整,需要遵循的標準化步驟。 | ||||
解決方案 | 1 | 修改參數,使MySQL下次關閉時進行clean shutdown。 set global innodb_fast_shutdown=0; (官方文檔并無此項建議,但是安全起見,推薦進行clean shutdown,使MySQL將所有修改寫入數據文件,擺脫對innodb_log_file的依賴,此參數若設置為2,當數據庫突然關閉時,系統將立即刷事務日志到磁盤上并且冷關閉mysqld服務;沒有提交的事務將會丟失,但是再啟動mysqld服務的時候會進行事務回滾恢復;)。 clean shutdown含義為將臟頁數據刷回磁盤保存。 | |||
2 | 停止應用系統。(必要時,應當在數據庫端殺掉所有數據庫連接) | ||||
3 | 等待InnoDB臟頁刷出。 | ||||
4 | 觀察show global status like 'Innodb_buffer_pool_pages_dirty';的返回結果,直至結果接近0。 如果這一步驟耗時超出可接受范圍,此時可以隨時中止操作,恢復應用。 | ||||
5 | 關閉MySQL數據庫,關閉期間數據庫因為需要將內存緩沖池中數據刷回磁盤保存,可能存在大量隨機讀取IO, 這次關閉需要較久的時間,需要耐心等待。 | ||||
6 | 檢查錯誤日志,確認沒有可疑報錯信息。 | ||||
7 | 編輯配置文件中的innodb_log_file_size參數。 | ||||
8 | 啟動數據庫,系統將根據新設定的innodb_log_file_size值修改事務日志文件大小,檢查數據庫是否運行正常。 | ||||
9 | 預熱數據庫即將部分數據緩存到內存緩沖池中,減少應用啟動時對于磁盤的IO沖擊(可選)。 | ||||
10 | 啟動應用,重新連接數據庫。 | ||||
知識點 | 1 | 如果InnoDB檢查到innodb_log_file_size和redo log文件數量不相等,InnoDB將寫入一個日志檢查點,關閉和移動舊的日志文件, 創建一個要求大小的新日志文件并打開它。 | |||
2 | innodb_fast_shutdown: 含義:設置innoDB引擎關閉的方式,默認值為:1,正常關閉的狀態; 0 — mysqld服務關閉前,先進行數據完全的清理和插入緩沖區的合并操作,若是臟頁數據 較多或者服務器IO性能等因素,會導致此過程需要數分鐘或者更長時間; 1 — 正常關閉mysqld服務,針對innodb引擎不做任何其他的操作; 2 — 若是mysqld出現崩潰,立即刷事務日志到磁盤上并且冷關閉mysqld服務;沒有提交 的事務將會丟失,但是再啟動mysqld服務的時候會進行事務回滾恢復; | ||||
3 | Innodb_buffer_pool_pages_dirty: 含義:InnoDB內存緩沖池中臟頁的比例。關閉數據庫時該參數等于0,說明臟頁刷回磁盤。 | ||||
4 | 臟頁數據計算公式:臟頁數據大小=Innodb_buffer_pool_pages_dirty*Innodb_buffer_pool_size。 | ||||
5 | innodb_log_file_size: 含義:事務日志的大小 |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。