mysql5.5升级mysql5.7

博主分享了一次从MySQL 5.5升级到5.7版本的亲身经历,强调了升级前备份的重要性。由于未备份,导致ibdata1文件损坏,经过一系列尝试,最终通过重建5.7版本、迁移数据和索引文件成功恢复数据。

如题:

核心思路,升级前记得备份,备份,备份……

遗憾的是我没有备份,一个启动的配置文件带到新版本mysql,直接毁掉原来的ibdata1文件,然后经过各种尝试,总算找回数据!!!

下面就是心路历程:

由于旧版本数据导出导入存在bug,个别特殊性质的数据没有办法导入或者导入不方便,所以产生了升级的念头,于是乎下载了5.7版本,一顿操作直接启动,启动的时候指向了原来的data目录,当时看着屏幕的日志提示,一顿懊悔,可是已经启动没有回头路,就让它走到最后,然后5.7版的数据库启动不起来。

带着侥幸的心理,回去用5.5版启动,然后也是B悲催,

最后通过官方的文档,看到了一些提示,说ibdata1是数据的索引信息,而文件夹的数据库存有的是数据信息,所以就想到,索引会不会是被5.7升级了,所以才会不兼容,

1,于是新建了一个5.7new版本初始化启动,不依赖之前的data,用命令初始化 并启动。然后产生对应的ib_logfile0,ib_logfile1以及对应的文件,接着关闭命令行。

2,把之前被5.7升级过的ibdata1文件(源5.5里面的文件)以及对应的非系统数据库(也就是以前我们新建的)拷贝过来5.7,然后启动

3,有惊喜有木有,然后终于打开了对应的所有表,当然,好在没有太多的用户信息,权限信息,直接就可以使用

4,然后命令行还是提示一些乱七八糟的信息,对于有强迫症的程序员而言,这是不可忍受的,就重新新建了一个数据库并把刚刚的数据拷贝并导入新的数据库,算是彻底解决了这个问题!

所以,猿人们,想自行升级的时候要小心,不要贪图方便把之前的ini文件拷贝完事,会很危险滴……虽然这两个版本还可以通过这个方式拯救,但是还是别再其他版本冒这个险为好!!!

### 如何将MySQL 5.5安全地升级5.7 #### 升级前准备 为了确保从MySQL 5.5平滑过渡至5.7,在执行任何实际升级操作之前,建议进行全面的数据备份。这不仅包括数据库中的表数据,还应覆盖配置文件和其他可能影响运行环境设置的信息。 #### 备份现有系统 使用`mysqldump`命令来导出所有的数据库结构和内容: ```bash mysqldump --all-databases --single-transaction --routines --events > all_databases.sql ``` 此命令会创建一个包含所有必要信息的SQL脚本文件[^1]。 #### 安装新版本 下载并安装目标版本即MySQL 5.7。如果在同一台机器上进行原地升级,则需特别注意保留旧版二进制路径下的重要资料,并按照官方文档指导完成新的服务端部署工作[^4]。 #### 数据迁移与验证 对于从小于等于5.6的小版本向更高版本演进的情况,可以采用逻辑备份恢复的方式来进行转换;而对于跨越多个主要发行系列的大跨度更新,则更倾向于通过物理拷贝加修复的方式来实现。 具体来说就是利用前面提到过的`mysql_upgrade`工具对已存在的实例实施就地升级流程——它能够自动检测并修正因版本变化而引起的内部元数据差异问题。不过需要注意的是,这种方式并不适用于直接由非常老的基础架构一次性跳跃数代的情形下应用。 因此针对从5.5升至5.7这样的情况,应该先迁移到中间版本比如5.6作为桥梁节点,然后再继续前进到最后的目的地5.7之上。每次迭代之间都要严格遵循上述提及的各项准备工作步骤,并仔细阅读对应时期的变更日志了解新增移除的功能特性以便调整应用程序层面的相关依赖关系[^2]。 #### 测试与优化 成功切换之后,务必安排充分的时间用于回归测试整个业务逻辑链路,确认没有任何因为底层存储引擎变动所引发的应用层面上的问题存在。同时也可以借此机会审视当前性能表现是否满足预期要求,进而采取针对性措施加以改进调优[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值