记录一次Docker更新Mysql版本后启动失败

544次阅读
没有评论

共计 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/mysqlib_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 镜像的时候添加版本号确定数据库所使用的版本, 注意精确到最小版本号.

正文完
 3
太阳
版权声明:本站原创文章,由 太阳 2023-10-26发表,共计1109字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)