iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据库升级的一些"陷阱"
  • 276
分享到

MySQL数据库升级的一些"陷阱"

MySQL数据库升级 2022-05-25 19:05:03 276人浏览 八月长安
摘要

对于商业数据库而言,数据库升级是一个优先级很高的事情,有版本升级路线图,有相应的补丁,而且对于方案还有一系列的演练,显然是一场硬仗。而在Mysql方向上,升级这件事情就被淡化了许多,好像只能证明它的存在而已,当然正是

对于商业数据库而言,数据库升级是一个优先级很高的事情,有版本升级路线图,有相应的补丁,而且对于方案还有一系列的演练,显然是一场硬仗。而在Mysql方向上,升级这件事情就被淡化了许多,好像只能证明它的存在而已,当然正是由于这种不重视,也让我今天走了不少弯路。

一般来说,升级mysql有两类可行方案,一类是直接升级数据字典,在本机完成,整个过程会有离线操作,会对业务有中断,第二种是通过高可用切换平滑实现,原理是搭建低版本到高版本的数据复制关系,这种方案优势比较明显,对于业务的侵入性最低,而且还可以提前验证,更甚还可以做到平滑回退,当然第二种方案要做很多前期的准备工作。

今天处理的一套环境基于存储和时长等因素使用的是第一种方法,整个流程如下:

1) mysqldump备份数据库,备份文件大约为120G

2) 停止MySQL 5.5数据库

3) 修改数据库端口重新启动数据库,比如从4308调整正为4318,使得迁移过程中避免其他业务连接的影响,验证无误后停库

4)修改mysql_base路径为5.7版本,修改/usr/bin/mysql等环境变量配置

5)替换配置文件为5.7版本,在5.7模式下启动数据库

6)使用upgrade模式升级数据字典,命令如下:

mysql_upgrade --Socket=/data/mysql_4306/tmp/mysql.sock --port=4308 -uroot -pxxxx

7) 检查复核

整个过程看上去还OK,实际操作的时候漏洞百出。

1) mysqldump备份数据库,备份文件大约为120G,为了快速在线备份采用mysqldump,但是异常情况下的恢复效率是硬伤,所以此处不建议使用mysqldump备份,而是建议使用物理备份,甚至如果条件允许,直接使用冷备模式

2) 停止MySQL 5.5数据库

3) 修改数据库端口重新启动数据库,比如从4308调整正为4318,使得迁移过程中避免其他业务连接的影响,验证无误后停库

4)修改mysql_base路径为5.7版本,修改/usr/bin/mysql等环境变量配置

5)替换配置文件为5.7版本,在5.7模式下启动数据库,这里没有注意ibdata的配置,运气不好,碰上了一个奇葩配置,如下:

innodb_data_file_path = ibdata1:1000M;ibdata2:100M:autoextend

而原本的规范配置都是一个ibdata文件,如下:

innodb_data_file_path = ibdata1:1G:autoextend,

导致数据库启动时报错,提示ibdata文件已经被损坏了。

6)使用upgrade模式升级数据字典,命令如下:

mysql_upgrade --socket=/data/mysql_4306/tmp/mysql.sock --port=4308 -uroot -pxxxx

upgrade这个命令的实现提示不够友好,抛出了一大堆的错误,但是最后竟然安慰我说,升级成功。问题到了这个阶段的时候,其实已经比较难收场了,因为数据字典文件损坏,导致升级数据字典的操作完全不可能,现在数据库连里面的表都desc不出来了

7) 检查复核,本来轻轻松松收工的验证工作现在变成了紧急修复工作。

后续的第一波补救措施如下:

8)使用已有的凌晨固定的物理备份恢复数据,大约为1个小时,mysqldump恢复果断放弃,印象中至少得6个小时以上。

9)使用物理备份模式备份当前数据库

10)重新升级数据库,尤其注意ibdata的配置,如果升级失败则使用物理备份快速回退

11)升级过程再次受阻,这一次是sql_mode,系统数据字典升级成功,但是数据库的表检测中,主要因为sql_mode的数据格式校验,导致很多数据表的格式校验失败,需要执行类似 alter table test.xxxxx force这样的重构操作。

12)因为恢复过程中未知原因,InnoDB的redo log也受到一些影响,日志开始抛错,所以当前恢复的数据库就算升级字典成功,本身也有一些硬伤。

后续的第二波补救措施如下:

13)使用mysqldump备份当前数据库,仅仅备份指定的数据库,不使用all-databases选项,权限单独导出。

14)部署MySQL 5.7的实例,不同的端口,如4390端口

15)sql_mode和5.5版本通配,修改其他参数等

16)导入mysqldump数据至4390的5.7实例

17)建立主从复制关系

18)切换数据库端口,使5.7的新版本服务生效

整个过程也是一波多折,见招拆招,发现想走捷径,最后发现一个坑都没有拉下,而这也给了我深刻的教训,千万不能掉以轻心,不能带着试运气的态度处理问题。

以上就是MySQL数据库升级的一些"陷阱"的详细内容,更多关于MySQL数据库升级的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库升级的一些"陷阱"

本文链接: https://www.lsjlt.com/news/9716.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据库升级的一些"陷阱"
    对于商业数据库而言,数据库升级是一个优先级很高的事情,有版本升级路线图,有相应的补丁,而且对于方案还有一系列的演练,显然是一场硬仗。而在MySQL方向上,升级这件事情就被淡化了许多,好像只能证明它的存在而已,当然正是...
    99+
    2022-05-25
    MySQL 数据库升级
  • 记一次生产数据库"意外"重启的经历
    前言 在一个阳光明媚的下午,电脑右下角传来一片片邮件提醒,同时伴随着微信钉钉的震动,打开一看,应用各种出错,天兔告警,数据库服务器内存爆红,Mysql数据库实例挂掉了。 排查 先交代一下数据库版本: my...
    99+
    2022-10-18
  • NoSQL数据库的陷阱有哪些
    本篇内容介绍了“NoSQL数据库的陷阱有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Schema管理...
    99+
    2022-10-18
  • 如何解决"您的服务器不支持mysql数据库"的问题
    本篇内容主要讲解“如何解决"您的服务器不支持mysql数据库"的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决"您的服务器不支持mysql数据库&quo...
    99+
    2023-06-13
  • 如何解决Oracle数据库"记录被另一个用户锁住"的问题
    这篇文章给大家分享的是有关如何解决Oracle数据库"记录被另一个用户锁住"的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、先来看看为什么会出锁住:&...
    99+
    2022-10-18
  • MySQL数据库升级的坑有哪些
    这篇文章主要介绍“MySQL数据库升级的坑有哪些”,在日常操作中,相信很多人在MySQL数据库升级的坑有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数据库升级...
    99+
    2022-10-18
  • Access数据库升级为SQL数据库的注意事项和方法有哪些
    这篇文章主要介绍“Access数据库升级为SQL数据库的注意事项和方法有哪些”,在日常操作中,相信很多人在Access数据库升级为SQL数据库的注意事项和方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出...
    99+
    2022-10-18
  • mysql数据库的一些基本知识
    下文主要给大家带来mysql数据库的一些基本知识,希望这些内容能够带给大家实际用处,这也是我编辑mysql数据库的一些基本知识这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。MySQL数据库&nbs...
    99+
    2022-10-18
  • 阿里云MySQL数据库升级提升性能与安全性的有效途径
    随着云计算技术的发展,越来越多的企业开始使用MySQL数据库进行数据存储和管理。然而,随着数据量的增加,MySQL数据库的性能和安全性问题也逐渐凸显出来。阿里云作为全球领先的云服务提供商,其MySQL数据库服务也得到了不断的升级和完善。本文...
    99+
    2023-11-02
    阿里 有效途径 安全性
  • MySQL数据库的一些常用备份命令
    本文主要给大家介绍MySQL数据库的一些常用备份命令,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL数据库的一些常用备份命令吧。备份MySQ...
    99+
    2022-10-18
  • 经常用到的一些mysql数据库语法
    本文主要给大家介绍经常用到的一些mysql数据库语法,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下经常用到的一些mysql数据库语法吧。1)登录my...
    99+
    2022-10-18
  • 有关MySQL onlinedb数据库的一些查询语句
    (1)查询users表,列出用户的所有信息。 SELECT * FROM users; (2)查询goods表,列出商品编号、名称和进货量(库存量+销售量,列名为purchases). SELECT gid, gname, ...
    99+
    2023-10-26
    数据库 mysql sql
  • 倒计时7天 | 全球第一的KV内存数据库即将再度升级!
    Redis 作为稳居世界排名第一的 KV 内存数据库,同时也是最受欢迎的开源缓存产品,在互联网行业有着非常广泛的应用,是应对高并发,大流量,低延迟业务场景的不二选择。从11年前,Redis发布第一个版本开始...
    99+
    2022-10-18
  • 数据库安装包和升级包脚本工具RedGate的使用有哪些
    这篇文章主要讲解了“数据库安装包和升级包脚本工具RedGate的使用有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库安装包和升级包脚本工具RedG...
    99+
    2022-10-18
  • MYSQL数据库初始化时经常遇到的一些问题总结
    下面一起来了解下MYSQL数据库初始化时经常遇到的一些问题,相信大家看完肯定会受益匪浅,文字在精不在多,希望MYSQL数据库初始化时经常遇到的一些问题这篇短内容是你想要的。 初始化MYSQL数据库...
    99+
    2022-10-18
  • 我们如何查看特定 MySQL 数据库中存储函数的列表以及其他一些信息?
    我们可以通过以下查询查看特定 MySQL 数据库中存储函数的列表以及其他信息 -mysql> SHOW FUNCTION STATUS WHERE db = 'query'\G ****************...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作