共计 1109 个字符,预计需要花费 3 分钟才能阅读完成。
错误日志
[ERROR] [MY-012526] [InnoDB] Upgrade is not supported after a crash or shutdown with innodb_fast_shutdown = 2. This redo log was created with MySQL 8.0.28, and it appears logically non empty. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html
[ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error.
[ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
[ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
[ERROR] [MY-010119] [Server] Aborting
临时解决办法
参考 serverfault questions 1110089
将目录 Mysql 数据目录 /var/lib/mysql
下 ib_logfile0、ib_logfile1…
文件移动备份到其他目录, 或者删除解决.
存在的问题
可能会导致数据丢失;
在关闭mysql时,参数Innodb_fast_shutdown将影响着存储引擎为Innodb的表的行为。该参数取值为{0,1,2}. 参数值为0代表mysql关闭时,innodb需要完成所有的full purge和merge insert buffer操作,这个过程会需要一定的时间,有时候可能会花上几个小时。在做innodb plugin升级时,通常要讲这个参数调整为0,然后在关闭数据库。参数值为1是该参数的默认值,表示关闭mysql时不完成full purge和Merge insert buffer,但是缓冲池中的脏页还是会写到磁盘中。参数值为2时,表示既不完成full purge和Merge insert buffer,同时也不将缓冲池中的脏页刷新到磁盘,而是将日志写入日志文件中。这种情况下,事务也不会丢失,但是下次启动时mysql会执行实例恢复。
总结
因为是Docker容器Mysql没有添加版本号使用了latest
, 更新的时候容器启动使用了restart: always
, 在拉取镜像混乱的版本启动导致数据目录损坏… 目前只能如此解决… 一定使用mysql Docker 镜像的时候添加版本号确定数据库所使用的版本, 注意精确到最小版本号.
正文完