概述
今天主要介紹一下MySQL數據庫一般修改InnoDB redo log事務日志文件大小的步驟,然后用一個實驗來演示一下,下面一起來看看吧~
基本步驟
在MySQL 5.5版本里,如果想修改ib_logfile(redo log)文件大小,那么步驟如下:
1)執行set global innodb_fast_shutdown = 0;命令,將所有的臟頁刷到磁盤。
2)執行mysqladmin shutdown命令關閉數據庫。
3)在my.cnf文件里修改innodb_log_file_size參數值。
4)執行mv ib_logfile* /bak命令,將redo log移動到/bak目錄下(不移走,啟動會報錯)。
5)執行mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &命令,最后啟動MySQL服務。
通過上面的步驟可完成修改redo log文件的大小。
在MySQL 5.6/5.7或MariaDB 10.0/10.1版本里更人性化,上面的第4)步可以忽略,直接啟動MySQL即可。
在MySQL 5.6/5.7或MariaDB 10.0/10.1版本里,InnoDB redo log的大小從最大4GB提高到512GB,可通過參數innodb_log_file_size來配置。
如果innodb_log_files_in_group設置為3組redo log,那么innodb_log_file_size * innodb_log_files_in_group不能超過512GB。設置的值越大,越可以減少checkpoint刷新臟頁的頻率,這對提升MySQL性能很重要,但風險就是增加了宕機恢復的時間。這里建議TPS在200~300每秒/寫的業務場景,通常設置為4GB即可。
實驗演示(基于mysql5.7)
1、當前innodb_log大小
mysql> show variables like 'innodb_log_file%';
2、編輯my.cnf
要更改日志文件大小,需配置 innodb_log_file_size。要增加日志文件的數量,需進行配置 innodb_log_files_in_group。
3、重啟數據庫
#service mysqld restart
4、觀察mysql日志
如果InnoDB檢測到 innodb_log_file_size與重做日志文件大小不同,則會寫入日志檢查點,關閉并刪除舊的日志文件,以請求的大小創建新的日志文件,并打開新的日志文件。
innodb日志文件通常命名為ib_logfile0,ib_logfile1,ib_logifleN,其中N小于select @@global.innodb_log_files_in_group返回的數字;