记一次线上mysql出错:由于docker自动拉取最新mysql镜像导致mysql容器无法启动

这篇具有很好参考价值的文章主要介绍了记一次线上mysql出错:由于docker自动拉取最新mysql镜像导致mysql容器无法启动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我随便写写,你们随便看看

环境背景:在docker中部署mysql镜像,通过portainer管理docker容器

简单说下过程:docker里mysql的时区没有设置,导致相差8小时,通过增加TZ=Asiz/Shanghai环境变量,然后重启容器来生效。结果重启的时候始终无法启动起来,后来发现是自动升级了mysql镜像版本,导致启动失败。

最终解决办法:创建旧版本的mysql容器,通过binlog恢复数据

在portainer中增加环境变量之后,启动的时候报错:[ERROR] [MY-013171] [InnoDB] Cannot boot server version 80027 on data directory built by version 80031. Downgrade is not supported
mysqld: Can't open file: 'mysql.ibd' (errno: 0 - )

提示:不能打开mysql.ibd文件,第一次遇到,通过错误提示知道和版本有关系。80031版本不支持80027版本的文件。

当时的第一反应就是,怎么会自动升级的?怎么滚回去?

自动升级的原因:在于在portainer创建容器的时候,使用的镜像没设置正确:

记一次线上mysql出错:由于docker自动拉取最新mysql镜像导致mysql容器无法启动

当时创建容器的时候,就看了一眼,没想到会有自动升级的问题。先把这里改回旧版本的镜像mysql:8.0.27,然后把环境变量里的两个版本变量更改一下: 记一次线上mysql出错:由于docker自动拉取最新mysql镜像导致mysql容器无法启动

 更改之后,重新启动,依然无法启动,报同样的错。。。

尝试把mysql.ibd删除,然后再重新启动,依然报错。。

创建新的mysql容器,使用8.0.31版本的镜像,然后把mysql.ibd文件复制过去,依然无法正常启动。。

最后想了下,最可能的原因就是使用8.0.31版本启动的时候,已经把mysql.ibd文件进行了更改,即使使用8.0.27版本启动也无法使用高版本的文件,导致目前的文件在两个版本都无法使用。也许会还有其他可能。。

在查找mysql.ibd文件的时候,发现了binlog文件,就想只能通过binlog恢复数据的方式恢复数据了。 放弃了原来的容器,把几个binlog文件导出来。

创建新容器,恢复数据

创建新容器,使用旧的镜像版本8.0.27,然后相关的环境变量和配置项都设置好,通过navicat连接保持畅通。

先说正常恢复数据的方法:我把几个binlog文件cp到新容器里面之后,在新容器里执行命令:

mysqlbinlog --no-defaults binlog.000001 | mysql-u root -p

其中binlog.000001为binlog文件,如果有多个文件的话,要多次按照顺序执行。

可以增加 --database=xxx 来指定数据库,我由于是全量恢复,就没指定。

执行完了之后,所有的数据都已恢复,至此一场惊险落幕。

在此期间尝试的其他方法:

1、将旧的binlog文件复制到新容器下,妄图通过新容器重启自动加载进去,也失败了。

2、将binlog文件转化成sql语句再通过sql导入,也失败了。转化后的sql语句要进行二次处理。数据量太大,时间又紧,就没继续。。

血与泪的教训

1、使用docker容器的时候,一定要指定镜像image的版本号,不能使用latest,防止因为重启自动升级版本导致无法启动。

2、数据库一定要做定时备份,平时用不到,用到了就能发挥大作用。即使是测试环境也要做,当然看情况。

也许还有其他的解决方案,望多多指教。

恢复数据的参考地址:MySQL通过Binlog恢复数据_撸码社区的博客-CSDN博客_binlog恢复数据文章来源地址https://www.toymoban.com/news/detail-471751.html

到了这里,关于记一次线上mysql出错:由于docker自动拉取最新mysql镜像导致mysql容器无法启动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记一次线上问题 → 偶尔的热情真的难顶呀!

    昨晚和媳妇坐在沙发上刷视频 我用手肘轻轻推了推媳妇:你看这渣男,玩完女的都不娶人家 媳妇:哎哟我天,哎呀妈,我这也没好哪去呀 我疑惑的看向媳妇:啥意思啊 媳妇看向自己的手机:啥意思啊,特么有些人,娶完了也不玩呀 我负责的系统需要同步上游系统的数据 同

    2024年02月03日
    浏览(42)
  • 得物-Golang-记一次线上服务的内存泄露排查

    在风和日丽的一天,本人正看着需求、敲着代码,展望美好的未来。突然收到一条内存使用率过高的告警。 告警的这个项目,老代码是python的,最近一直在go化。随着go化率不断上升,发现内存的RSS使用率越飙越高。最终达到容器内存限制后,进程会自动重启。RSS如下图所示

    2024年02月04日
    浏览(58)
  • 记一次线上kafka重复消费的问题解决及思考

    线上ELK日志发现kafka消费者消费到重复消息 由于生产方本身就发送了重复的消息,导致消费到重复消息 消费方采用的是循环poll的模式,具体是在多线程分租户去批量处理的消息

    2024年02月10日
    浏览(50)
  • 【记一次线上事故的排查思路】- CPU飙升问题排查

    由于项目排期较紧,临时从其他组调来三个开发资源帮我一起做项目,难免上线的时候大家的需求一块上线。 问题来了,上线三天后,线上CPU总是莫名奇妙的突然飙升,飙升后CPU并未降下来,而是一直处在高点。 由于是线上导致的问题,CPU超限后,会自动重启项目,未能保

    2024年01月23日
    浏览(49)
  • 记一次线上bug排查-----SpringCloud Gateway组件 请求头accept-encoding导致响应结果乱码

           基于公司的业务需求,在SpringCloud Gateway组件的基础上,写了一个转发服务,测试开发阶段运行正常,并实现初步使用。但三个月后,PostMan请求接口,返回异常,经排查,从日志中获取到转发响应的结果为乱码:        跟踪日志: 转发到目标接口,响应结果已乱码

    2024年02月04日
    浏览(49)
  • 一次线上mysql 调优 ,join 的调优,索引优化(Block Nested Loop)

    原因: 某接口调用十分缓慢,通过 Explain 发现是SQL问题 可以看到,在Join连接时,出现了BNL查询,BNL出现是因为,JOIN连接时 dr表也就是 domian_redemption 被驱动的表上没出现可用的索引。 个人解决方法: 在对应的连接字段上,既dr的orderCode字段,内表加上索引,再次执行Explai

    2024年02月05日
    浏览(47)
  • 通过一次线上问题,讲下Ribbon重试机制

    前段时间,产品经理在线上验证产品功能的时候,发现某个功能不符合需求预期,后来测试验证发现是服务端的一个接口大概率偶现超时,前端做了兜底处理,所以对线上用户么有太大影响。 由于服务端的接口偶现超时,并且网关设置了30s超时熔断,所以前端请求就直接报错

    2024年02月15日
    浏览(58)
  • 记一次1Panel面板安装mysql(docker报错的问题)

    在centos上安装了1Panel控制面板之后,利用该面板安装mysql时候报了个错误 错误如下 最后更换了下docker的源,成功解决问题 命令如下: 问题成功解决  

    2024年02月08日
    浏览(57)
  • 记一次由于操作失误致使数据库瘫痪的故障分析与解决方案

    2023年8月27日,随着新业务的接入,我们开始进行项目的灰度发布。然而,直到2023年8月31日下午,我们才发现一个新字段并没有进行字段刷新,导致所有数据都是默认值,从而无法继续进行灰度测试。在业务方的要求下,我们需要进行批量更新字段。鉴于我们已经知道了时间

    2024年02月09日
    浏览(44)
  • MongoDB:记一次生产环境中mongo出现的严重出错与排查解决

    造成此种错误的原因有如下几种常见情况: * 系统磁盘已满导致mongo无法向文件系统写数据。 * 系统突然死机(或系统重启)造成mongo文件系统被损坏。 * 使用非正当方法强制停止mongo服务,如:kill -1/-9的方式。 * mongo文件系统遭篡改。 还有很多种原因............ 启动mongod失败

    2023年04月14日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包