一、概述

MySQL升级5.6到5.7的方式有两种,分别为:

In-Place Upgrade

Logical Upgrade

二、升级操作

以In-Place方式即物理升级为例,MySQL版本分别为 5.6.27 和 5.7.13。

具体过程如下:

使用xtrabackup对5.6的数据进行一次全备

安装MySQL5.7,将5.6备份的数据文件拷贝到5.7的data目录下

在5.7中对5.6的数据文件进行升级

升级完成后将5.7作为从库同步线上的5.6

找合适的时间切换到5.7的从库上

1. 环境准备

搭建5.7实例,并使用5.6实例的备份替换5.7的data目录

mv data data_20180405 #移走5.7库data

mv 56_back_20180405 data #移入5.6库备份文件

chown -R mysql.mysql data

2. 升级数据文件

开启5.7实例

./bin/mysqld_safe --defaults-file=./etc/mysql.cnf &

启动后会发现此时5.7实例已经可以登录,但是在error日志中会有很多error:

[ERROR] Incorrect definition of table performance_schema.events_waits_current: expected column 'NESTING_EVENT_TYPE' at position 15 to have type enum('TRANSACTION','STATEMENT','STAGE','WAIT', found type enum('STATEMENT','STAGE','WAIT').

[ERROR] Incorrect definition of table performance_schema.events_waits_summary_by_user_by_event_name: expected column 'USER' at position 0 to have type char(32), found type char(16).

[ERROR] Column count of performance_schema.table_lock_waits_summary_by_table is wrong. Expected 68, found 73. Created with MySQL 50627, now running 50713. Please use mysql_upgrade to fix this error.

[ERROR] mysql.user has no `Event_priv` column at position 28

[ERROR] Native table 'performance_schema'.'session_variables' has the wrong structure

...

下面使用5.7实例对5.6数据文件进行升级:

./bin/mysql_upgrade --defaults-extra-file=./etc/user.root.cnf

该操作会check系统表并进行升级,并且check所有库表兼容性。

3. 重启5.7实例

./bin/mysqladmin --defaults-extra-file=./etc/user.root.cnf shutdown

./bin/mysqld_safe --defaults-file=./etc/mysql.cnf &

此时查看error日志,会发现这次的启动过程正常了,没有出现报错。

至此5.6实例的数据文件已经被成功升级。

4. 建立主从同步进行切换

由于5.7使用的是5.6的全备,所以可以通过指定 xtrabackup_binlog_info 中的同步点来建立同步,5.7可以作为5.6的从库。

同步检查没问题后,便可以找合适的时间来进行切换了。切换相关的具体步骤就不再详细表述,选择在业务低峰期使用MHA或手动切换都可以。

三、相关问题

1. Cannot setup server variables

在使用mysql_upgrade进行升级时遇到:

./bin/mysql_upgrade --defaults-extra-file=./etc/user.root.cnf

Error occurred: Cannot setup server variables.

这是因为我此时使用的账号是一个普通账号,没有super权限,在更换为具有super权限的账号后问题解决。

四、后记

MySQL官网上提供的方法是shutdown 5.6 ,替换二进制包和命令等为5.7的版本,然后进行升级操作,但是这种方法需要shutdown DB,可能无法适用于线上,因此反过来要更好一些。

作者:o翡翠谷o

mysql version 50713_MySQL 5.6 升级为 MySQL 5.7相关推荐

  1. 怎么解决mysql中文显示_怎样解决关于MySQL显示中文的问题?

    第一种方法,很精辟的总结: 经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧: WINDOWS 下导入应该这样 使 ...

  2. Centos MySQL 5.7安装、升级教程

    MySQL 5.7安装.升级笔记分享: 卸载当前的 MySQL 查看当前 MySQL 版本: ? 1 2 [root@coderknock ~]# mysql -V mysql Ver 14.14 D ...

  3. mysql从5.7平滑升级到8.0.27

    mysql升级过程 官网下载最新的mysql安装包 上传到服务器的/opt/mysql目录下解压: # 文件上传位置在/opt/mysql/下面 cd /opt/mysql/# 解压安装包 [root ...

  4. 项目纪实丨MySQL Bug引发客户现场升级失败 万里DBA 6小时攻克难关

    上午10:00 某运营商核心报表平台升级前夕 作为万里数据库的战略合作伙伴,某运营商一直密切关注着国产数据库的发展.其系统中一套基于MySQL8.0.11版本的核心报表平台,近期由于存在安全扫描的漏洞 ...

  5. MySQL从5.7.32升级到8.0.22

    目录 一.备份与导出数据 二.升级到MySQL-8.0.22同时解决字符集问题 2.1.卸载MySQL-5.7.32 2.2.安装MySQL-8.0.22 2.3.修改配置文件 my.cnf 三.导入 ...

  6. mysql 5.1.61_MySQL数据库之将Mysql 5.1.61升级为mysql 5.6.19

    本文主要向大家介绍了MySQL数据库之将Mysql 5.1.61升级为mysql 5.6.19 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 环境:mysql-5.1.61 操 ...

  7. R语言连接MySQL报错:could not run statement: The used command is not allowed with this MySQL version

    版本说明 R版本:3.5 MySQL版本:8.0 RMySQL版本:0.10.19 情景说明: 使用RMySQL成功连接到MySQL数据库,可以进行查询操作,但在插入时报错,提示信息如下: con & ...

  8. suse mysql 5.5_suse 11 mysql 如何从5.1升级到5.5

    MySQL-server-5.0.67-1.sles11 libqt4-sql-mysql-4.6.2-1.6.11 libmysqlclient15-5.0.67-13.20.1 php5-mysq ...

  9. php mysql切换版本5.7_phpstudy 升级 MySQL版本到MySQL5.7

    #### 起因:我用laravel6做迁移的时候,总是报这个错误 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified k ...

  10. MySQL - 无索引行锁升级为表锁

    文章目录 生猛干货 无索引行锁升级为表锁演示 表结构 索引信息 操作演示 结论 搞定MySQL 生猛干货 带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试 无索引行锁升级为表 ...

最新文章

  1. php向数据库添加数据失败,无法从PHP中的表单向数据库添加数据
  2. Xmind settings lower
  3. 数据结构(六)---队列的链式存储的实现---java版
  4. 学go语言能做什么工作?
  5. ArcGIS实验教程——实验三十一:ArcGIS构建泰森多边形(Thiessen Polygon)实例精解
  6. word排版插件_8款堪称神器的Office插件,让你工作效率直线飙升!
  7. 网页服务器移机设置,手头有一台服务器,应该怎么配置才能正常作为网站服务器运行呢?...
  8. 华为服务器重装操作系统,华为服务器安装操作系统
  9. 有道词典java下载电脑版下载不了_网易有道词典电脑版下载
  10. 微信小程序之tab切换效果
  11. 计算机桌面黑屏有鼠标,win7系统启动黑屏只有显示鼠标指针怎么办(图文)
  12. 阿里云oss使用cdn,节省oss下行流量
  13. 一阶线性差分方程通项公式求解
  14. There are 2 audio listeners in the scene.的问题
  15. Linux不用root权限安装nvcc
  16. linux定期清理日志脚本,一周清理一次
  17. SM3算法预处理和非预处理的调用(0018规范接口)
  18. Python核心编程读书笔记
  19. 工业互联网-企业数据打通解决方案
  20. 由于计算机主板的闪存中固化了,主板bios内存设置

热门文章

  1. Flexbox属性介绍
  2. [HeadFirst-HTMLCSS学习笔记][第八章扩大你的词汇量]
  3. linux 输入java 出现中文乱码
  4. DataGridView列自适应宽度
  5. 微服务架构实战篇(六):Spring boot2.x 集成阿里大鱼短信接口详解与Demo
  6. 微信小程序电商实战-商品详情加入购物车(下)
  7. 三种方式解决vue中v-html元素中标签样式
  8. ES6学习笔记一(var let const三者区别)
  9. Tp5获取文件,小文件可以获取,大文件获取失败
  10. PHP foreach使用 引用 的坑