我尝试在 MariaDB 10.11.5 中恢复旧的数据库原始备份(整个 datadir),但它没有启动。之后我在日志中发现以下几行:
[ERROR] InnoDB: File ./ib_logfile0 was not found
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[Note] InnoDB: Starting shutdown...
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[Note] Plugin 'FEEDBACK' is disabled.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting
十多年来,我一直在删除 MySQL 和 MariaDB 服务器上的日志文件以进行调整innodb-log-file-size
或进行原始备份并节省空间。下次服务器重新启动时,它们会自动重新创建。但突然间,这次不是了。ib_logfile0
这一切都是因为从 MariaDB 10.8.1 版本开始,由于多次更改 ( MDEV-27199 ) 和 ( MDEV-14425 ),a 的存在变得强制。它不再是自动创建的,而是严格要求的。
我尝试创建一个空日志文件,但这显然不起作用并导致错误:
[ERROR] InnoDB: ib_logfile0 is empty, and LSN is unknown.
[ERROR] InnoDB: Plugin initialization aborted with error Data structure corruption
在研究了 jira 上的任务之后,我强烈的感觉到没有办法像以前那样“重新生成”日志文件。所以,我的主要问题是:除了在旧的 MariaDB 版本上恢复备份并为新版本正确备份它们之外,还有其他方法吗?
那么在新版本上创建此类“原始”备份又如何呢?我读到,您现在必须减小日志的大小以节省磁盘空间,而不是删除日志。或许,现在这是唯一的办法了吧?
PS 值得注意的是,从版本 10.8.1 开始,当您在配置中更改日志文件大小时,日志文件大小会自动更改。从版本 10.9.0 开始 - 即使在运行时 ( MDEV-27812 )。