龙空技术网

详解mysql如何修改InnoDB redo log事务日志大小

波波说运维 429

前言:

当前兄弟们对“mysql日志太大”可能比较讲究,你们都需要学习一些“mysql日志太大”的相关知识。那么小编在网络上网罗了一些对于“mysql日志太大””的相关文章,希望姐妹们能喜欢,大家快快来学习一下吧!

概述

今天主要介绍一下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方面的内容,感兴趣的朋友可以关注一下~

标签: #mysql日志太大