最近,我试图将MySQL 5.1服务器升级到5.7。当服务器无法启动时,我发现您必须先导出数据,否则需要进行大量的升级(二进制文件不再可用),所以我回滚到5.1进行导出。
问题是,回到5.1,InnoDB将不再注册。在错误日志中,我得到:
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
160822 17:05:12 [ERROR] Plugin 'InnoDB' init function returned error.
160822 17:05:12 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.作为一种解决办法,我在my.cnf中设置了my.cnf。再次重新启动,并:
InnoDB: No valid checkpoint found.
InnoDB: If this error appears when you are creating an InnoDB database,
InnoDB: the problem may be that during an earlier attempt you managed
InnoDB: to create the InnoDB data files, but log file creation failed.
InnoDB: If that is the case, please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/error-creating-innodb.html阅读它所暗示的与delete all files created by InnoDB: all ibdata files and all ib_logfile files的链接。我有一个120 GB的ibdata文件,我肯定不打算删除它,所以这是不可能的。不过,我确实尝试过重命名日志文件,但是服务器仍然没有出现。
这里有什么指示吗?
编辑:我也尝试重命名iblog文件。这将导致mysql建议设置innodb_force_recovery=6的另一个错误。这样做会导致以下错误:
160823 12:17:32 InnoDB: Page checksum 271832187, prior-to-4.0.14-form checksum 315921779
InnoDB: stored checksum 401867329, prior-to-4.0.14-form stored checksum 401867329
InnoDB: Page lsn 96 3891045697, low 4 bytes of lsn at page end 3891045697
InnoDB: Page number (if stored to page already) 966706,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0
InnoDB: Page may be a system page
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 966706.
InnoDB: You may have to recover from a backup.
InnoDB: It is also possible that your operating
InnoDB: system has corrupted its own file cache
InnoDB: and rebooting your computer removes the
InnoDB: error.
InnoDB: If the corrupt page is an index page
InnoDB: you can also try to fix the corruption
InnoDB: by dumping, dropping, and reimporting
InnoDB: the corrupt table. You can use CHECK
InnoDB: TABLE to scan your table for corruption.
InnoDB: See also http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 966707.
InnoDB: You may have to recover from a backup.
160823 12:17:32 InnoDB: Page dump in ascii and hex (16384 bytes):发布于 2017-04-06 06:59:50
我刚才遇到了类似的问题。我在同一台服务器上运行MySQL 5.1和5.7。
使用MySQL 5.1时,默认的innodb_log_file_size是5m。
mysql> show variables like 'innodb_log_file_size';
+----------------------+---------+
| Variable_name | Value |
+----------------------+---------+
| innodb_log_file_size | 5242880 |
+----------------------+---------+
1 row in set (0.00 sec)当MySQL 5.7时,默认的innodb_log_file_size是48m。
mysql> show variables like 'innodb_log_file_size';
+----------------------+----------+
| Variable_name | Value |
+----------------------+----------+
| innodb_log_file_size | 50331648 |
+----------------------+----------+
1 row in set (0.01 sec)当将MySQL 5.1服务器升级到5.7,然后降级到5.1时,ib_logfile0/1文件就会发生神奇的变化。无法识别日志文件的检查点。因此,innodb无法使用日志文件执行正常恢复。我没有做深入的研究,所以我不能给出详细的解释。
溶液
备份数据文件并重新启动MySQL
mv ibdata1 ibdata1.bak
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
service mysqld restart修改my.cnf文件,添加以下行
innodb_force_recovery=6恢复数据文件并重新启动
mv ibdata1.bak ibdata1
service mysqld restart现在,您将看到MySQL成功启动。Ibdata1可能不能正常工作。您可以使用mysqldump备份应用程序数据。然后删除my.cnf文件中的恢复行。同时删除ibdata和logfile。重新启动MySQL并导入备份。
有点复杂,但这些对我有帮助。
故障
当重做日志文件被重新创建时,不能重做一小块日志。
发布于 2016-08-23 02:50:30
不要删除ibdata*。所有的数据都在那里!
到现在为止,日志文件应该无关紧要。因此,有几种方法可以处理“错误”。
把旧的my.cnf拿回来。如果这是不实际的,至少要设定
innodb_log_file_size = 50331648 (对日志文件的更改有点棘手。显然,5.7将其增加到48 to的新默认值,没有问题。但是,5.1没有动态更改文件大小的代码。)
另一种方法是删除(或移开) iblog*文件。
https://stackoverflow.com/questions/39090510
复制相似问题