Rootop 服务器运维与web架构

InnoDB: Error: log file /usr/local/mysql/data/ib_logfile0 is of different size 0 134217728 bytes

200622 15:20:32 [Note] Plugin 'FEDERATED' is disabled.
200622 15:20:32 InnoDB: The InnoDB memory heap is disabled
200622 15:20:32 InnoDB: Mutexes and rw_locks use GCC atomic builtins
200622 15:20:32 InnoDB: Compressed tables use zlib 1.2.11
200622 15:20:32 InnoDB: Using Linux native AIO
200622 15:20:32 InnoDB: Initializing buffer pool, size = 256.0M
200622 15:20:32 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file /usr/local/mysql/data/ib_logfile0 is of different size 0 134217728 bytes
InnoDB: than specified in the .cnf file 0 67108864 bytes!
200622 15:20:32 [ERROR] Plugin 'InnoDB' init function returned error.
200622 15:20:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
200622 15:20:32 [ERROR] Unknown/unsupported storage engine: InnoDB
200622 15:20:32 [ERROR] Aborting

提示说ib_logfile0文件的大小与 .cnf配置文件中的配置 67108864 大小不一致,导致启动失败。

解决方法:
1、可以修改mysql配置文件中 innodb_log_file_size 的值为 134217728/1024/1024 = 128 Mb,再测试启动mysql,如果不行继续下面方法2。
2、删除或备份mysql数据目录下的 ib_logfile 开头的文件,再启动mysql。

mysql> show variables like '%innodb_log%';
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| innodb_log_buffer_size      | 16777216 |
| innodb_log_checksums        | ON       |
| innodb_log_compressed_pages | ON       |
| innodb_log_file_size        | 50331648 |
| innodb_log_files_in_group   | 2        |
| innodb_log_group_home_dir   | ./       |
| innodb_log_write_ahead_size | 8192     |
+-----------------------------+----------+
7 rows in set (0.00 sec)

# innodb_log_files_in_group 参数控制redo log文件个数,ib_logfile[0-1]
# innodb_log_file_size 控制redo log文件大小

# 解释
ib_logfile用于事务日志,也叫redo log,有了它,InnoDB 就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失。
还有一个日志叫undo log。
它有两个作用:
1、提供事务回滚
2、多个行版本控制(MVCC)(事务隔离级别里有这个概念)
在数据更新时,不仅写redo log,也写对应的undo log,如果因为某些原因导致事务失败,可以通过undo log回滚。

注:
为了满足事务的原子性,在操作任何数据之前,首先将数据备份到Undo Log,然后进行数据的修改。如果出现了错误或者用户执行了ROLLBACK语句,系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。与redo log不同的是,磁盘上不存在单独的undo log文件,它存放在数据库内部的一个特殊段(segment)中,这称为undo段(undo segment),undo段位于共享表空间内。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/4797.html

作者:Venus

服务器运维与性能优化

评论已关闭。