概述
今天主要介绍一下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返回的数字;
这个参数对于数据库优化还是占一定比重的,建议衡量后可以设置下。后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~