MySQL 运维实战课
张新铭(俊达)
云掣科技资深数据库专家,前淘宝网、支付宝数据库专家
781 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 17 讲/共 41 讲
MySQL 运维实战课
15
15
1.0x
00:00/00:00
登录|注册

16|如何在不影响业务的情况下平滑升级MySQL?

你好,我是俊达。
这一讲我们来讨论下将 MySQL 升级到 8.0 最新版本的具体操作步骤。基于数据库的当前版本,升级的路径会有一些差异。MySQL 支持相邻两个大版本的物理升级,比如从 5.5 升级到 5.6,从 5.6 升级到 5.7,从 5.7 升级到 8.0,但是不支持跨大版本的升级,比如不能从 5.6 直接升级到 8.0。在同一个大版本下,可以跨越多个小版本升级,比如从 8.0.x 升级到 8.0.z。
版本的降级就比较麻烦了,无法直接从 8.0 降级到 5.7,所以在升级正式环境前,需要做好充分的评估和测试,尽量避免出现版本降级的情况。

原地升级

这一讲我们提到的物理升级、原地升级,实际上指的都是同一个意思,也就是使用新版本的 MySQL 软件来启动数据库,但是数据目录中,数据文件是在老版本下创建的。

MySQL 8.0 原地升级小版本

版本升级的操作步骤

我们先来看一下 MySQL 8.0 原地升级的操作步骤。我们已经先将相关版本的 MySQL 的二进制包下载并解压到 /opt 目录下。
# tree /opt -d -L 1
/opt
├── mysql8.0 -> mysql-8.0.32-linux-glibc2.12-x86_64
├── mysql-8.0.32-linux-glibc2.12-x86_64
├── mysql-8.0.34-linux-glibc2.17-x86_64
├── mysql-8.0.35-linux-glibc2.17-x86_64
├── mysql-8.0.37-linux-glibc2.17-x86_64
└── mysql-8.0.39-linux-glibc2.17-x86_64
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. MySQL 8.0支持原地降级,但之前的版本需要使用数据导出再导入的方式或者用老版本的数据库备份文件来恢复数据。 2. MySQL 8.0将数据字典存储到了InnoDB存储引擎中,物理上,这些数据字典表实际上都存储在datadir下的mysql.ibd文件中。 3. MySQL 8.0 InnoDB有很大的变化,包括Undo段放到了单独的Undo表空间中,Redo文件的存储方式也发生了变化。 4. 在升级过程中,需要保障业务的连续性,可以通过升级备库后再切换主库的方式来避免影响业务。 5. 在升级正式环境的数据库之前,需要先做好充分的测试,包括升级操作本身和应用程序访问升级后的数据库是否正常。 6. 数据库升级后,需要验证数据复制,确保数据的一致性。 7. 版本降级的成本较高,需要避免这种情况,如果需要降级,要考虑用老版本数据库最近的一个备份文件来恢复数据库,或者通过数据导入导出的方式迁移数据。 8. 在使用生产环境的真实数据恢复出来的验证环境做业务测试时,需要注意不要影响线上业务。 9. 使用逻辑的方式升级或降级数据库可能会存在问题,需要注意数据一致性和迁移过程中的兼容性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 运维实战课》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部