http://www.ttlsa.com/mysql/how-to-add-and-adjust-the-mysql-innodb-log-file/
数据在不断变化,数据库性能随着数据量的变大而变低,在对数据库进行性能分析时,为保障数据库处于高性能状态下,有时改变InnoDB日志文件大小或数量,这个过程需要停止mysql服务,否则会造成数据丢失或mysql服务启动失败。在说明如何添加和调整innodb log文件之前,先来看看与日志有关的参数。
innodb_log_group_home_dir
在事务被提交并写入到表空间磁盘文件上之前,事务数据存储在InnoDB的redo日志文件里。这些日志位于innodb_log_group_home_dir变量定义的目录中,通常我们把这个目录设置与innodb_data_home_dir变量相同。为了获得最佳性能,建议分离innodb_data_home_dir和innodb_log_group_home_dir到单独的物理存储阵列上,这样可以保证IO资源不起冲突,利于服务器处理大量高并发连接。
innodb_log_file_size
这个选项决定着性能,要慎重设置。默认设置为5M,难以满足生产环境下的需求。日志文件在mysql实例第一次启动时初始化,该文件是旋转的,因此可以根据文件修改时间来判断日志文件的旋转频率,旋转频率太频繁,说明日志文件太小了,要扩大。
innodb_log_file_size设置大小通常视innodb_buffer_pool_size而定。影响日志文件性能的变量是innodb_log_buffer_size,确保有足够大的日志缓冲区来保存脏数据在被写入到日志文件之前。
对于比较小的innodb_buffer_pool_size,建议是设置一样大。 但是,对于比较大的innodb_buffer_pool_size,不建议这么设置,这会存在一个潜在的问题,那就是当mysql挂掉时,恢复数据需要很久,造成大量的停机时间。官方文档的建议设置是innodb_buffer_pool_size/innodb_log_files_in_group。
[warning]innodb_log_file_size是静态的变量,需要以“干净”的方式更改并重新启动,否则mysql启动不起来。[/warning]
innodb_log_buffer_size
该变量将数据存导入到内存中,可以减少大量的IO资源消耗。当事务提交时,保存脏数据,后续在刷新到磁盘。当我们调整innodb_buffer_pool_size大小时,innodb_log_buffer_size和innodb_log_file_size也应该做出相应的调整。
innodb_log_files_in_group
该变量控制日志文件数。默认值为2。日志是以顺序的方式写入。
[warning]innodb_log_files_in_group是静态的变量,需要以“干净”的方式更改并重新启动,否则mysql启动不起来。[/warning]
添加和调整innodb log文件步骤:
1. 停止mysql服务
[warning]一定要正常的关闭。[/warning]2. 根据innodb_log_group_home_dir变量进入到日志目录下
3. 备份旧的日志文件,以防不测便于回退
4. 按照要求调整日志文件大小或数量并写入到my.cnf文件中
innodb_log_file_size调整日志文件大小。
innodb_log_files_in_group调整日志文件数量。
innodb_log_group_home_dir调整日志文件位于目录。
5. 重新启动mysql服务
该过程将会按照新的日志配置来创建日志文件。同时,注意查看mysql错误日志,来监控是否出错。
就这么简单,下节来说说如果调整表空间。
如需转载请注明出处: http://www.ttlsa.com/html/2937.html